diff -Nru libunwind-1.7.2/INSTALL libunwind-1.8.1/INSTALL --- libunwind-1.7.2/INSTALL 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/INSTALL 2024-02-22 14:09:14.000000000 +0000 @@ -1,8 +1,8 @@ Installation Instructions ************************* -Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, -Inc. + Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software +Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -12,97 +12,96 @@ Basic Installation ================== - Briefly, the shell command `./configure && make && make install' + Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for +more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this -`INSTALL' file but do not implement all of the features documented +'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. - The `configure' shell script attempts to guess correct values for + The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that +those values to create a 'Makefile' in each directory of the package. +It may also create one or more '.h' files containing system-dependent +definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). +file 'config.log' containing compiler output (useful mainly for +debugging 'configure'). - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. + It can also use an optional file (typically called 'config.cache' and +enabled with '--cache-file=config.cache' or simply '-C') that saves the +results of its tests to speed up reconfiguring. Caching is disabled by +default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can +to figure out how 'configure' could check whether to do them, and mail +diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you +some point 'config.cache' contains results you don't want to keep, you may remove or edit it. - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. + The file 'configure.ac' (or 'configure.in') is used to create +'configure' by a program called 'autoconf'. You need 'configure.ac' if +you want to change it or regenerate 'configure' using a newer version of +'autoconf'. The simplest way to compile this package is: - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. + 1. 'cd' to the directory containing the package's source code and type + './configure' to configure the package for your system. - Running `configure' might take a while. While running, it prints + Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. - 2. Type `make' to compile the package. + 2. Type 'make' to compile the package. - 3. Optionally, type `make check' to run any self-tests that come with + 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. - 4. Type `make install' to install the programs and any data files and + 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular - user, and only the `make install' phase executed with root + user, and only the 'make install' phase executed with root privileges. - 5. Optionally, type `make installcheck' to repeat any self-tests, but + 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a - regular user, particularly if the prior `make install' required + regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly + source code directory by typing 'make clean'. To also remove the + files that 'configure' created (so you can compile the package for + a different kind of computer), type 'make distclean'. There is + also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. - 7. Often, you can also type `make uninstall' to remove the installed + 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. - 8. Some packages, particularly those that use Automake, provide `make + 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other - targets like `make install' and `make uninstall' work correctly. + targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' +the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: + You can give 'configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here is +an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix @@ -113,21 +112,21 @@ You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the +own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. This -is known as a "VPATH" build. +the 'configure' script. 'configure' automatically checks for the source +code in the directory that 'configure' is in and in '..'. This is known +as a "VPATH" build. - With a non-GNU `make', it is safer to compile the package for one + With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before +installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like +"universal" binaries--by specifying multiple '-arch' options to the +compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ @@ -136,105 +135,104 @@ This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. +using the 'lipo' tool if you have problems. Installation Names ================== - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX', where PREFIX must be an + By default, 'make install' installs the package's commands under +'/usr/local/bin', include files under '/usr/local/include', etc. You +can specify an installation prefix other than '/usr/local' by giving +'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses +pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. In general, the -default for these options is expressed in terms of `${prefix}', so that -specifying just `--prefix' will affect all of the other directory +options like '--bindir=DIR' to specify different values for particular +kinds of files. Run 'configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the default +for these options is expressed in terms of '${prefix}', so that +specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the -correct locations to `configure'; however, many packages provide one or +correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the -`make install' command line to change installation locations without +'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each -affected directory. For example, `make install +affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of -`${prefix}'. Any directories that were specified during `configure', -but not in terms of `${prefix}', must each be overridden at install -time for the entire installation to be relocated. The approach of -makefile variable overrides for each directory variable is required by -the GNU Coding Standards, and ideally causes no recompilation. -However, some platforms have known limitations with the semantics of -shared libraries that end up requiring recompilation when using this -method, particularly noticeable in packages that use GNU Libtool. - - The second method involves providing the `DESTDIR' variable. For -example, `make install DESTDIR=/alternate/directory' will prepend -`/alternate/directory' before all installation names. The approach of -`DESTDIR' overrides is not required by the GNU Coding Standards, and +'${prefix}'. Any directories that were specified during 'configure', +but not in terms of '${prefix}', must each be overridden at install time +for the entire installation to be relocated. The approach of makefile +variable overrides for each directory variable is required by the GNU +Coding Standards, and ideally causes no recompilation. However, some +platforms have known limitations with the semantics of shared libraries +that end up requiring recompilation when using this method, particularly +noticeable in packages that use GNU Libtool. + + The second method involves providing the 'DESTDIR' variable. For +example, 'make install DESTDIR=/alternate/directory' will prepend +'/alternate/directory' before all installation names. The approach of +'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even -when some directory options were not specified in terms of `${prefix}' -at `configure' time. +when some directory options were not specified in terms of '${prefix}' +at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. +with an extra prefix or suffix on their names by giving 'configure' the +option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the + Some packages pay attention to '--enable-FEATURE' options to +'configure', where FEATURE indicates an optional part of the package. +They may also pay attention to '--with-PACKAGE' options, where PACKAGE +is something like 'gnu-as' or 'x' (for the X Window System). The +'README' should mention any '--enable-' and '--with-' options that the package recognizes. - For packages that use the X Window System, `configure' can usually + For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. +you can use the 'configure' options '--x-includes=DIR' and +'--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the -execution of `make' will be. For these packages, running `./configure +execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be -overridden with `make V=1'; while running `./configure +overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be -overridden with `make V=0'. +overridden with 'make V=0'. Particular systems ================== - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in + On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC +is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. - HP-UX `make' updates targets which have the same time stamps as -their prerequisites, which makes it generally unusable when shipped -generated files such as `configure' are involved. Use GNU `make' -instead. + HP-UX 'make' updates targets which have the same time stamps as their +prerequisites, which makes it generally unusable when shipped generated +files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try +parse its '' header file. The option '-nodtk' can be used as a +workaround. If GNU CC is not installed, it is therefore recommended to +try ./configure CC="cc" @@ -242,26 +240,26 @@ ./configure CC="cc -nodtk" - On Solaris, don't put `/usr/ucb' early in your `PATH'. This + On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of -these programs are available in `/usr/bin'. So, if you need `/usr/ucb' -in your `PATH', put it _after_ `/usr/bin'. +these programs are available in '/usr/bin'. So, if you need '/usr/ucb' +in your 'PATH', put it _after_ '/usr/bin'. - On Haiku, software installed for all users goes in `/boot/common', -not `/usr/local'. It is recommended to use the following options: + On Haiku, software installed for all users goes in '/boot/common', +not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== - There may be some features `configure' cannot figure out + There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints +_same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: +'--build=TYPE' option. TYPE can either be a short name for the system +type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM @@ -270,101 +268,101 @@ OS KERNEL-OS - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't + See the file 'config.sub' for the possible values of each field. If +'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will +use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. +eventually be run) with '--host=TYPE'. Sharing Defaults ================ - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. + If you want to set default values for 'configure' scripts to share, +you can create a site shell script called 'config.site' that gives +default values for variables like 'CC', 'cache_file', and 'prefix'. +'configure' looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run +environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: +them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc -causes the specified `gcc' to be used as the C compiler (unless it is +causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf limitation. Until the limitation is lifted, you can use -this workaround: +Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an +Autoconf limitation. Until the limitation is lifted, you can use this +workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash -`configure' Invocation +'configure' Invocation ====================== - `configure' recognizes the following options to control how it + 'configure' recognizes the following options to control how it operates. -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. +'--help' +'-h' + Print a summary of all of the options to 'configure', and exit. -`--help=short' -`--help=recursive' +'--help=short' +'--help=recursive' Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' + 'configure', and exit. The 'short' variant lists options used only + in the top level, while the 'recursive' variant lists options also + present in any nested packages. + +'--version' +'-V' + Print the version of Autoconf used to generate the 'configure' script, and exit. -`--cache-file=FILE' +'--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to + traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' +'--config-cache' +'-C' + Alias for '--cache-file=config.cache'. + +'--quiet' +'--silent' +'-q' Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error + suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). -`--srcdir=DIR' +'--srcdir=DIR' Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. + 'configure' can determine that directory automatically. -`--prefix=DIR' - Use DIR as the installation prefix. *note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. +'--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: for + more details, including other options available for fine-tuning the + installation locations. -`--no-create' -`-n' +'--no-create' +'-n' Run the configure checks, but stop before creating any output files. -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. +'configure' also accepts some other, not widely useful, options. Run +'configure --help' for more details. diff -Nru libunwind-1.7.2/Makefile.am libunwind-1.8.1/Makefile.am --- libunwind-1.7.2/Makefile.am 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/Makefile.am 2024-02-20 19:54:51.000000000 +0000 @@ -8,7 +8,9 @@ if BUILD_COREDUMP include_HEADERS += include/libunwind-coredump.h endif BUILD_COREDUMP - +if BUILD_NTO +include_HEADERS += include/libunwind-nto.h +endif BUILD_NTO if ARCH_AARCH64 include_HEADERS += include/libunwind-aarch64.h endif @@ -24,9 +26,6 @@ if ARCH_MIPS include_HEADERS += include/libunwind-mips.h endif -if ARCH_TILEGX -include_HEADERS += include/libunwind-tilegx.h -endif if ARCH_X86 include_HEADERS += include/libunwind-x86.h endif @@ -85,8 +84,6 @@ include/tdep-hppa/jmpbuf.h include/tdep-hppa/dwarf-config.h \ include/tdep-mips/libunwind_i.h \ include/tdep-mips/jmpbuf.h include/tdep-mips/dwarf-config.h \ - include/tdep-tilegx/libunwind_i.h \ - include/tdep-tilegx/jmpbuf.h include/tdep-tilegx/dwarf-config.h \ include/tdep-x86/libunwind_i.h \ include/tdep-x86/jmpbuf.h include/tdep-x86/dwarf-config.h \ include/tdep-x86_64/libunwind_i.h \ diff -Nru libunwind-1.7.2/Makefile.in libunwind-1.8.1/Makefile.in --- libunwind-1.7.2/Makefile.in 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/Makefile.in 2024-02-22 14:09:14.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -91,12 +91,12 @@ target_triplet = @target@ @BUILD_PTRACE_TRUE@am__append_1 = include/libunwind-ptrace.h @BUILD_COREDUMP_TRUE@am__append_2 = include/libunwind-coredump.h -@ARCH_AARCH64_TRUE@am__append_3 = include/libunwind-aarch64.h -@ARCH_ARM_TRUE@am__append_4 = include/libunwind-arm.h -@ARCH_IA64_TRUE@am__append_5 = include/libunwind-ia64.h -@ARCH_HPPA_TRUE@am__append_6 = include/libunwind-hppa.h -@ARCH_MIPS_TRUE@am__append_7 = include/libunwind-mips.h -@ARCH_TILEGX_TRUE@am__append_8 = include/libunwind-tilegx.h +@BUILD_NTO_TRUE@am__append_3 = include/libunwind-nto.h +@ARCH_AARCH64_TRUE@am__append_4 = include/libunwind-aarch64.h +@ARCH_ARM_TRUE@am__append_5 = include/libunwind-arm.h +@ARCH_IA64_TRUE@am__append_6 = include/libunwind-ia64.h +@ARCH_HPPA_TRUE@am__append_7 = include/libunwind-hppa.h +@ARCH_MIPS_TRUE@am__append_8 = include/libunwind-mips.h @ARCH_X86_TRUE@am__append_9 = include/libunwind-x86.h @ARCH_X86_64_TRUE@am__append_10 = include/libunwind-x86_64.h @ARCH_PPC32_TRUE@am__append_11 = include/libunwind-ppc32.h @@ -158,9 +158,9 @@ esac am__include_HEADERS_DIST = include/libunwind-dynamic.h \ include/libunwind-ptrace.h include/libunwind-coredump.h \ - include/libunwind-aarch64.h include/libunwind-arm.h \ - include/libunwind-ia64.h include/libunwind-hppa.h \ - include/libunwind-mips.h include/libunwind-tilegx.h \ + include/libunwind-nto.h include/libunwind-aarch64.h \ + include/libunwind-arm.h include/libunwind-ia64.h \ + include/libunwind-hppa.h include/libunwind-mips.h \ include/libunwind-x86.h include/libunwind-x86_64.h \ include/libunwind-ppc32.h include/libunwind-ppc64.h \ include/libunwind-sh.h include/libunwind-s390x.h \ @@ -203,7 +203,7 @@ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - cscope distdir dist dist-all distcheck + cscope distdir distdir-am dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is @@ -360,6 +360,7 @@ PKG_MAINTAINER = @PKG_MAINTAINER@ PKG_MAJOR = @PKG_MAJOR@ PKG_MINOR = @PKG_MINOR@ +PTHREADS_LIB = @PTHREADS_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -453,8 +454,6 @@ include/tdep-hppa/jmpbuf.h include/tdep-hppa/dwarf-config.h \ include/tdep-mips/libunwind_i.h \ include/tdep-mips/jmpbuf.h include/tdep-mips/dwarf-config.h \ - include/tdep-tilegx/libunwind_i.h \ - include/tdep-tilegx/jmpbuf.h include/tdep-tilegx/dwarf-config.h \ include/tdep-x86/libunwind_i.h \ include/tdep-x86/jmpbuf.h include/tdep-x86/dwarf-config.h \ include/tdep-x86_64/libunwind_i.h \ @@ -515,8 +514,8 @@ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -714,7 +713,10 @@ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -779,7 +781,7 @@ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir @@ -805,7 +807,7 @@ @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir @@ -823,7 +825,7 @@ distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -833,7 +835,7 @@ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac diff -Nru libunwind-1.7.2/README libunwind-1.8.1/README --- libunwind-1.7.2/README 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/README 2024-02-21 13:39:50.000000000 +0000 @@ -16,7 +16,6 @@ | Linux | SuperH | ✓ | | Linux | IA-64 | ✓ | | Linux | PARISC | Works well, but C library missing unwind-info | -| Linux | Tilegx | 64-bit mode only | | Linux | MIPS | ✓ | | Linux | RISC-V | 64-bit only | | Linux | LoongArch | 64-bit only | @@ -26,6 +25,8 @@ | FreeBSD | AArch64 | ✓ | | FreeBSD | PPC32 | ✓ | | FreeBSD | PPC64 | ✓ | +| QNX | Aarch64 | ✓ | +| QNX | x86-64 | ✓ | | Solaris | x86-64 | ✓ | ## Libc Requirements @@ -52,7 +53,6 @@ | riscv | p | p | | s390x | p | p | | sh | r | | -| tilegx | r | r | | x86 | p | r | | x86_64 | p | p | @@ -200,10 +200,5 @@ ## Contacting the Developers -Please direct all questions regarding this library to . - -You can do this by sending an email to with -a body of "subscribe libunwind-devel", or you can subscribe and manage your -subscription via the web-interface at . - -You can also interact on our GitHub page: . +Please raise issues and pull requests through the GitHub repository: +. diff -Nru libunwind-1.7.2/aclocal.m4 libunwind-1.8.1/aclocal.m4 --- libunwind-1.7.2/aclocal.m4 2023-07-30 11:33:09.000000000 +0000 +++ libunwind-1.8.1/aclocal.m4 2024-02-22 14:09:13.000000000 +0000 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- +# generated automatically by aclocal 1.16.1 -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# Copyright (C) 2002-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -32,10 +32,10 @@ # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.15' +[am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15], [], +m4_if([$1], [1.16.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,12 +51,12 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15])dnl +[AM_AUTOMAKE_VERSION([1.16.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) -# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# Copyright (C) 2011-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,7 +118,7 @@ # Figure out how to run the assembler. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -138,7 +138,7 @@ # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -190,7 +190,7 @@ # AM_COND_IF -*- Autoconf -*- -# Copyright (C) 2008-2014 Free Software Foundation, Inc. +# Copyright (C) 2008-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -227,7 +227,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -258,7 +258,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -449,13 +449,12 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. - # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], @@ -463,49 +462,41 @@ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) shift - for mf + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf do # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS @@ -514,18 +505,17 @@ # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -612,8 +602,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: -# -# +# +# AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. @@ -680,7 +670,7 @@ Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . +that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM @@ -722,7 +712,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -743,7 +733,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# Copyright (C) 2003-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -765,7 +755,7 @@ # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -800,7 +790,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -808,49 +798,42 @@ # AM_MAKE_INCLUDE() # ----------------- -# Check to see how make treats includes. +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' am__doit: - @echo this is the am__doit target + @echo this is the am__doit target >confinc.out .PHONY: am__doit END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# Copyright (C) 1997-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -889,7 +872,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -918,7 +901,7 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -965,7 +948,7 @@ # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -984,7 +967,7 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1065,7 +1048,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# Copyright (C) 2009-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1125,7 +1108,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1153,7 +1136,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# Copyright (C) 2006-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1172,7 +1155,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# Copyright (C) 2004-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -Nru libunwind-1.7.2/config/ar-lib libunwind-1.8.1/config/ar-lib --- libunwind-1.7.2/config/ar-lib 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/config/ar-lib 2024-02-22 14:09:14.000000000 +0000 @@ -4,7 +4,7 @@ me=ar-lib scriptversion=2012-03-01.08; # UTC -# Copyright (C) 2010-2014 Free Software Foundation, Inc. +# Copyright (C) 2010-2018 Free Software Foundation, Inc. # Written by Peter Rosin . # # This program is free software; you can redistribute it and/or modify @@ -18,7 +18,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a diff -Nru libunwind-1.7.2/config/compile libunwind-1.8.1/config/compile --- libunwind-1.7.2/config/compile 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/config/compile 2024-02-22 14:09:14.000000000 +0000 @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-10-14.11; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -17,7 +17,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -255,7 +255,8 @@ echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -339,9 +340,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nru libunwind-1.7.2/config/config.guess libunwind-1.8.1/config/config.guess --- libunwind-1.7.2/config/config.guess 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/config/config.guess 2024-02-22 14:09:15.000000000 +0000 @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. -timestamp='2015-08-20' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -15,7 +17,7 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -27,19 +29,27 @@ # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] -Output the configuration name of the system \`$me' is run on. +Output the configuration name of the system '$me' is run on. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -50,13 +60,13 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -84,78 +94,109 @@ exit 1 fi -trap 'exit 1' 1 2 15 +# Just in case it came from the environment. +GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then +if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "${UNAME_SYSTEM}" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown - eval $set_cc_for_build - cat <<-EOF > $dummy.c + set_cc_for_build + cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -167,29 +208,32 @@ # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - /sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "${UNAME_MACHINE_ARCH}" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) - arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -205,10 +249,10 @@ ;; esac # Determine ABI tags. - case "${UNAME_MACHINE_ARCH}" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release @@ -216,43 +260,68 @@ # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}${abi}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo ${UNAME_MACHINE}-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -266,163 +335,158 @@ # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" + set_cc_for_build + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; + # Japanese Language versions have a version number like '4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in sun3) - echo m68k-sun-sunos${UNAME_RELEASE} + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos${UNAME_RELEASE} + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -432,44 +496,44 @@ # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { @@ -478,95 +542,96 @@ #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux${UNAME_RELEASE} + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs${UNAME_RELEASE} + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux${UNAME_RELEASE} + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then + if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include main() @@ -577,77 +642,77 @@ exit(0); } EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then + if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + case $sc_cpu_version in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + case $sc_kernel_bits in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include @@ -680,13 +745,13 @@ exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if test "$HP_ARCH" = hppa2.0w then - eval $set_cc_for_build + set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -697,23 +762,23 @@ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include int main () @@ -738,38 +803,38 @@ exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo ${UNAME_MACHINE}-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -777,139 +842,174 @@ fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; esac - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case $UNAME_MACHINE in x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -919,175 +1019,246 @@ EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) - eval $set_cc_for_build + set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + MIPS_ENDIAN= #else - CPU= + MIPS_ENDIAN= #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility + # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1095,12 +1266,12 @@ *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1110,43 +1281,43 @@ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo ${UNAME_MACHINE}-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1154,9 +1325,9 @@ test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; @@ -1165,248 +1336,447 @@ test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + ;; + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv${UNAME_RELEASE} + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 < in order to provide the needed -information to handle your system. +our_year=`echo $timestamp | sed 's,-.*,,'` +thisyear=`date +%Y` +# shellcheck disable=SC2003 +script_age=`expr "$thisyear" - "$our_year"` +if test "$script_age" -lt 3 ; then + cat >&2 </dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" EOF +fi exit 1 # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff -Nru libunwind-1.7.2/config/config.sub libunwind-1.8.1/config/config.sub --- libunwind-1.7.2/config/config.sub 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/config/config.sub 2024-02-22 14:09:16.000000000 +0000 @@ -1,12 +1,14 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2024 Free Software Foundation, Inc. -timestamp='2015-08-20' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -15,7 +17,7 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -33,7 +35,7 @@ # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -50,15 +52,21 @@ # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -68,13 +76,13 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -90,12 +98,12 @@ - ) # Use stdin as input. break ;; -* ) - echo "$me: invalid option $1$help" + echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. - echo $1 + echo "$1" exit ;; * ) @@ -111,1234 +119,1167 @@ exit 1;; esac -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + | windows-* ) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac ;; - -psos*) - os=-psos + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac ;; esac -# Decode aliases for certain CPU-COMPANY combinations. +# Decode 1-component or ad-hoc basic machines case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | ba \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | e2k | epiphany \ - | fido | fr30 | frv | ft32 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + op50n) + cpu=hppa1.1 + vendor=oki ;; - ms1) - basic_machine=mt-unknown + op60c) + cpu=hppa1.1 + vendor=oki ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown + ibm*) + cpu=i370 + vendor=ibm ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none + orion105) + cpu=clipper + vendor=highlevel ;; - xscaleeb) - basic_machine=armeb-unknown + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple ;; - - xscaleel) - basic_machine=armel-unknown + pmac | pmac-mpw) + cpu=powerpc + vendor=apple ;; - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | ba-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | e2k-* | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | riscv32-* | riscv64-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | visium-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att + cpu=m68000 + vendor=att ;; 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - asmjs) - basic_machine=asmjs-unknown - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux + cpu=we32k + vendor=att ;; bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec + cpu=powerpc + vendor=ibm + basic_os=cnk ;; decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 + cpu=pdp10 + vendor=dec + basic_os=tops10 ;; decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 + cpu=pdp10 + vendor=dec + basic_os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon + cpu=m68k + vendor=motorola ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 ;; encore | umax | mmax) - basic_machine=ns32k-encore + cpu=ns32k + vendor=encore ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} ;; fx2800) - basic_machine=i860-alliant + cpu=i860 + vendor=alliant ;; genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 + cpu=ns32k + vendor=ns ;; h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp + cpu=m68000 + vendor=hp ;; hp9k3[2-9][0-9]) - basic_machine=m68k-hp + cpu=m68k + vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm + cpu=hppa1.0 + vendor=hp ;; i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 ;; i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 ;; i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv ;; i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} ;; iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) + cpu=mips + vendor=sgi + case $basic_os in + irix*) ;; *) - os=-irix4 + basic_os=irix4 ;; esac ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; miniframe) - basic_machine=m68000-convergent + cpu=m68000 + vendor=convergent ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint ;; news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) ;; - -ns2*) - os=-nextstep2 + ns2*) + basic_os=nextstep2 ;; *) - os=-nextstep3 + basic_os=nextstep3 ;; esac ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem + cpu=np1 + vendor=gould ;; op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k + cpu=hppa1.1 + vendor=oki + basic_os=proelf ;; pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 ;; pbd) - basic_machine=sparc-tti + cpu=sparc + vendor=tti ;; pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + cpu=m68k + vendor=tti ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc + pc532) + cpu=ns32k + vendor=pc532 ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc + pn) + cpu=pn + vendor=gould ;; - pentium4) - basic_machine=i786-pc + power) + cpu=power + vendor=ibm ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ps2) + cpu=i386 + vendor=ibm ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + rm[46]00) + cpu=mips + vendor=siemens ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + rtpc | rtpc-*) + cpu=romp + vendor=ibm ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks ;; - pn) - basic_machine=pn-gould + tower | tower-32) + cpu=m68k + vendor=ncr ;; - power) basic_machine=power-ibm + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu ;; - ppc | ppcbe) basic_machine=powerpc-unknown + w65) + cpu=w65 + vendor=wdc ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown + none) + cpu=none + vendor=none ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine ;; - ppc64) basic_machine=powerpc64-unknown + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 - exit 1 + # Recognize the canonical CPU types that are allowed with any + # company name. + case $cpu in + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be | aarch64c | arm64ec \ + | abacus \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ + | alphapca5[67] | alpha64pca5[67] \ + | am33_2.0 \ + | amdgcn \ + | arc | arceb | arc32 | arc64 \ + | arm | arm[lb]e | arme[lb] | armv* \ + | avr | avr32 \ + | asmjs \ + | ba \ + | be32 | be64 \ + | bfin | bpf | bs2000 \ + | c[123]* | c30 | [cjt]90 | c4x \ + | c8051 | clipper | craynv | csky | cydra \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | elxsi | epiphany \ + | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ + | javascript \ + | h8300 | h8500 \ + | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i*86 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | kvx \ + | le32 | le64 \ + | lm32 \ + | loongarch32 | loongarch64 \ + | m32c | m32r | m32rle \ + | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ + | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ + | m88110 | m88k | maxq | mb | mcore | mep | metag \ + | microblaze | microblazeel \ + | mips* \ + | mmix \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nanomips* \ + | nds32 | nds32le | nds32be \ + | nfp \ + | nios | nios2 | nios2eb | nios2el \ + | none | np1 | ns16k | ns32k | nvptx \ + | open8 \ + | or1k* \ + | or32 \ + | orion \ + | picochip \ + | pdp10 | pdp11 | pj | pjl | pn | power \ + | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ + | pru \ + | pyramid \ + | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ + | rl78 | romp | rs6000 | rx \ + | s390 | s390x \ + | score \ + | sh | shl \ + | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ + | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ + | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ + | spu \ + | tahoe \ + | thumbv7* \ + | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ + | tron \ + | ubicom32 \ + | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ + | vax \ + | vc4 \ + | visium \ + | w65 \ + | wasm32 | wasm64 \ + | we32k \ + | x86 | x86_64 | xc16x | xgate | xps100 \ + | xstormy16 | xtensa* \ + | ymp \ + | z8k | z80) + ;; + + *) + echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 + exit 1 + ;; + esac ;; esac # Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` +case $vendor in + digital*) + vendor=dec ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + commodore*) + vendor=cbm ;; *) ;; @@ -1346,200 +1287,226 @@ # Decode manufacturer-specific aliases for certain operating systems. -if [ x"$os" != x"" ] +if test x"$basic_os" != x then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +obj= +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 - exit 1 + # No normalization, but not necessarily accepted, that comes below. ;; esac + else # Here we handle the default operating systems that come with various machines. @@ -1552,261 +1519,452 @@ # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. -case $basic_machine in +kernel= +obj= +case $cpu-$vendor in score-*) - os=-elf + os= + obj=elf ;; spu-*) - os=-elf + os= + obj=elf ;; *-acorn) - os=-riscix1.2 + os=riscix1.2 ;; arm*-rebel) - os=-linux + kernel=linux + os=gnu ;; arm*-semi) - os=-aout + os= + obj=aout ;; c4x-* | tic4x-*) - os=-coff + os= + obj=coff ;; c8051-*) - os=-elf + os= + obj=elf + ;; + clipper-intergraph) + os=clix ;; hexagon-*) - os=-elf + os= + obj=elf ;; tic54x-*) - os=-coff + os= + obj=coff ;; tic55x-*) - os=-coff + os= + obj=coff ;; tic6x-*) - os=-coff + os= + obj=coff ;; # This must come before the *-dec entry. pdp10-*) - os=-tops20 + os=tops20 ;; pdp11-*) - os=-none + os=none ;; *-dec | vax-*) - os=-ultrix4.2 + os=ultrix4.2 ;; m68*-apollo) - os=-domain + os=domain ;; i386-sun) - os=-sunos4.0.2 + os=sunos4.0.2 ;; m68000-sun) - os=-sunos3 + os=sunos3 ;; m68*-cisco) - os=-aout + os= + obj=aout ;; mep-*) - os=-elf + os= + obj=elf ;; mips*-cisco) - os=-elf + os= + obj=elf ;; - mips*-*) - os=-elf + mips*-*|nanomips*-*) + os= + obj=elf ;; or32-*) - os=-coff + os= + obj=coff ;; *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 + os=sysv3 ;; sparc-* | *-sun) - os=-sunos4.1.1 + os=sunos4.1.1 ;; - *-be) - os=-beos + pru-*) + os= + obj=elf ;; - *-haiku) - os=-haiku + *-be) + os=beos ;; *-ibm) - os=-aix + os=aix ;; *-knuth) - os=-mmixware + os=mmixware ;; *-wec) - os=-proelf + os=proelf ;; *-winbond) - os=-proelf + os=proelf ;; *-oki) - os=-proelf + os=proelf ;; *-hp) - os=-hpux + os=hpux ;; *-hitachi) - os=-hiux + os=hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv + os=sysv ;; *-cbm) - os=-amigaos + os=amigaos ;; *-dg) - os=-dgux + os=dgux ;; *-dolphin) - os=-sysv3 + os=sysv3 ;; m68k-ccur) - os=-rtu + os=rtu ;; m88k-omron*) - os=-luna + os=luna ;; - *-next ) - os=-nextstep + *-next) + os=nextstep ;; *-sequent) - os=-ptx + os=ptx ;; *-crds) - os=-unos + os=unos ;; *-ns) - os=-genix + os=genix ;; i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 + os=mvs ;; *-gould) - os=-sysv + os=sysv ;; *-highlevel) - os=-bsd + os=bsd ;; *-encore) - os=-bsd + os=bsd ;; *-sgi) - os=-irix + os=irix ;; *-siemens) - os=-sysv4 + os=sysv4 ;; *-masscomp) - os=-rtu + os=rtu ;; f30[01]-fujitsu | f700-fujitsu) - os=-uxpv + os=uxpv ;; *-rom68k) - os=-coff + os= + obj=coff ;; *-*bug) - os=-coff + os= + obj=coff ;; *-apple) - os=-macos + os=macos ;; *-atari*) - os=-mint + os=mint + ;; + *-wrs) + os=vxworks ;; *) - os=-none + os=none ;; esac + fi +# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). + +case $os in + # Sometimes we do "kernel-libc", so those need to count as OSes. + llvm* | musl* | newlib* | relibc* | uclibc*) + ;; + # Likewise for "kernel-abi" + eabi* | gnueabi*) + ;; + # VxWorks passes extra cpu info in the 4th filed. + simlinux | simwindows | spe) + ;; + # See `case $cpu-$os` validation below + ghcjs) + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ + | hiux* | abug | nacl* | netware* | windows* \ + | os9* | macos* | osx* | ios* | tvos* | watchos* \ + | mpw* | magic* | mmixware* | mon960* | lnews* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | mirbsd* | netbsd* | dicos* | openedition* | ose* \ + | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ + | bosx* | nextstep* | cxux* | oabi* \ + | ptx* | ecoff* | winnt* | domain* | vsta* \ + | udi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* | serenity* \ + | cygwin* | msys* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | mint* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ + | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ + | fiwix* | mlibc* | cos* | mbr* | ironclad* ) + ;; + # This one is extra strict with allowed versions + sco3.2v2 | sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + # This refers to builds using the UEFI calling convention + # (which depends on the architecture) and PE file format. + # Note that this is both a different calling convention and + # different file format than that of GNU-EFI + # (x86_64-w64-mingw32). + uefi) + ;; + none) + ;; + kernel* | msvc* ) + # Restricted further below + ;; + '') + if test x"$obj" = x + then + echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2 + fi + ;; + *) + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) + ;; + uclinux-uclibc*- ) + ;; + managarm-mlibc*- | managarm-kernel*- ) + ;; + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 + exit 1 + ;; + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 + ;; + kfreebsd*-gnu*- | kopensolaris*-gnu*-) + ;; + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) + ;; + nto-qnx*-) + ;; + os2-emx-) + ;; + *-eabi*- | *-gnueabi*-) + ;; + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format + ;; + -*-) + # Blank kernel with real OS is always fine. + ;; + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 + exit 1 + ;; +esac + # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) vendor=acorn ;; - -sunos*) + *-sunos*) vendor=sun ;; - -cnk*|-aix*) + *-cnk* | *-aix*) vendor=ibm ;; - -beos*) + *-beos*) vendor=be ;; - -hpux*) + *-hpux*) vendor=hp ;; - -mpeix*) + *-mpeix*) vendor=hp ;; - -hiux*) + *-hiux*) vendor=hitachi ;; - -unos*) + *-unos*) vendor=crds ;; - -dgux*) + *-dgux*) vendor=dg ;; - -luna*) + *-luna*) vendor=omron ;; - -genix*) + *-genix*) vendor=ns ;; - -mvs* | -opened*) + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) vendor=ibm ;; - -os400*) + s390-* | s390x-*) vendor=ibm ;; - -ptx*) + *-ptx*) vendor=sequent ;; - -tpf*) + *-tpf*) vendor=ibm ;; - -vxsim* | -vxworks* | -windiss*) + *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; - -aux*) + *-aux*) vendor=apple ;; - -hms*) + *-hms*) vendor=hitachi ;; - -mpw* | -macos*) + *-mpw* | *-macos*) vendor=apple ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; - -vos*) + *-vos*) vendor=stratus ;; esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac -echo $basic_machine$os +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff -Nru libunwind-1.7.2/config/depcomp libunwind-1.8.1/config/depcomp --- libunwind-1.7.2/config/depcomp 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/config/depcomp 2024-02-22 14:09:14.000000000 +0000 @@ -1,9 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2013-05-30.07; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2018 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -783,9 +783,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nru libunwind-1.7.2/config/install-sh libunwind-1.8.1/config/install-sh --- libunwind-1.7.2/config/install-sh 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/config/install-sh 2024-02-22 14:09:14.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2014-09-12.12; # UTC +scriptversion=2018-03-11.20; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -271,15 +271,18 @@ fi dst=$dst_arg - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. + # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst - dst=$dstdir/`basename "$src"` + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac dstdir_status=0 else dstdir=`dirname "$dst"` @@ -288,6 +291,11 @@ fi fi + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + obsolete_mkdir_used=false if test $dstdir_status != 0; then @@ -324,14 +332,16 @@ # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) - # $RANDOM is not portable (e.g. dash); use it when possible to - # lower collision chance + # Note that $RANDOM variable is not portable (e.g. dash); Use it + # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 - # As "mkdir -p" follows symlinks and we work in /tmp possibly; so - # create the $tmpdir first (and fail if unsuccessful) to make sure - # that nobody tries to guess the $tmpdir name. + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p' feature. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 @@ -434,8 +444,8 @@ else # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 @@ -500,9 +510,9 @@ done # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nru libunwind-1.7.2/config/ltmain.sh libunwind-1.8.1/config/ltmain.sh --- libunwind-1.7.2/config/ltmain.sh 2023-07-30 11:33:06.000000000 +0000 +++ libunwind-1.8.1/config/ltmain.sh 2024-02-22 14:09:12.000000000 +0000 @@ -31,7 +31,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.6 Debian-2.4.6-0.1" +VERSION="2.4.6 Debian-2.4.6-14" package_revision=2.4.6 @@ -387,7 +387,7 @@ # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +# debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: @@ -1370,7 +1370,7 @@ #! /bin/sh # Set a version string for this script. -scriptversion=2014-01-07.03; # UTC +scriptversion=2015-10-07.11; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 @@ -1530,6 +1530,8 @@ { $debug_cmd + _G_rc_run_hooks=false + case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; @@ -1538,16 +1540,16 @@ eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do - eval $_G_hook '"$@"' - - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift + if eval $_G_hook '"$@"'; then + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + _G_rc_run_hooks=: + fi done - func_quote_for_eval ${1+"$@"} - func_run_hooks_result=$func_quote_for_eval_result + $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result } @@ -1557,10 +1559,16 @@ ## --------------- ## # In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed +# full positional parameter list in your hook function, you may remove/edit +# any options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for -# 'eval'. Like this: +# 'eval'. In this case you also must return $EXIT_SUCCESS to let the +# hook's caller know that it should pay attention to +# '_result'. Returning $EXIT_FAILURE signalizes that +# arguments are left untouched by the hook and therefore caller will ignore the +# result variable. +# +# Like this: # # my_options_prep () # { @@ -1570,9 +1578,11 @@ # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' -# -# func_quote_for_eval ${1+"$@"} -# my_options_prep_result=$func_quote_for_eval_result +# # No change in '$@' (ignored completely by this hook). There is +# # no need to do the equivalent (but slower) action: +# # func_quote_for_eval ${1+"$@"} +# # my_options_prep_result=$func_quote_for_eval_result +# false # } # func_add_hook func_options_prep my_options_prep # @@ -1581,25 +1591,37 @@ # { # $debug_cmd # +# args_changed=false +# # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in -# --silent|-s) opt_silent=: ;; +# --silent|-s) opt_silent=: +# args_changed=: +# ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift +# args_changed=: # ;; -# *) set dummy "$_G_opt" "$*"; shift; break ;; +# *) # Make sure the first unrecognised option "$_G_opt" +# # is added back to "$@", we could need that later +# # if $args_changed is true. +# set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # -# func_quote_for_eval ${1+"$@"} -# my_silent_option_result=$func_quote_for_eval_result +# if $args_changed; then +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# fi +# +# $args_changed # } # func_add_hook func_parse_options my_silent_option # @@ -1611,16 +1633,32 @@ # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # -# func_quote_for_eval ${1+"$@"} -# my_option_validation_result=$func_quote_for_eval_result +# false # } # func_add_hook func_validate_options my_option_validation # -# You'll alse need to manually amend $usage_message to reflect the extra +# You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. +# func_options_finish [ARG]... +# ---------------------------- +# Finishing the option parse loop (call 'func_options' hooks ATM). +func_options_finish () +{ + $debug_cmd + + _G_func_options_finish_exit=false + if func_run_hooks func_options ${1+"$@"}; then + func_options_finish_result=$func_run_hooks_result + _G_func_options_finish_exit=: + fi + + $_G_func_options_finish_exit +} + + # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the @@ -1630,17 +1668,28 @@ { $debug_cmd - func_options_prep ${1+"$@"} - eval func_parse_options \ - ${func_options_prep_result+"$func_options_prep_result"} - eval func_validate_options \ - ${func_parse_options_result+"$func_parse_options_result"} + _G_rc_options=false - eval func_run_hooks func_options \ - ${func_validate_options_result+"$func_validate_options_result"} + for my_func in options_prep parse_options validate_options options_finish + do + if eval func_$my_func '${1+"$@"}'; then + eval _G_res_var='$'"func_${my_func}_result" + eval set dummy "$_G_res_var" ; shift + _G_rc_options=: + fi + done - # save modified positional parameters for caller - func_options_result=$func_run_hooks_result + # Save modified positional parameters for caller. As a top-level + # options-parser function we always need to set the 'func_options_result' + # variable (regardless the $_G_rc_options value). + if $_G_rc_options; then + func_options_result=$_G_res_var + else + func_quote_for_eval ${1+"$@"} + func_options_result=$func_quote_for_eval_result + fi + + $_G_rc_options } @@ -1649,9 +1698,9 @@ # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete +# needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before -# returning. +# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). func_hookable func_options_prep func_options_prep () { @@ -1661,10 +1710,14 @@ opt_verbose=false opt_warning_types= - func_run_hooks func_options_prep ${1+"$@"} + _G_rc_options_prep=false + if func_run_hooks func_options_prep ${1+"$@"}; then + _G_rc_options_prep=: + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result + fi - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result + $_G_rc_options_prep } @@ -1678,18 +1731,20 @@ func_parse_options_result= + _G_rc_parse_options=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} - - # Adjust func_parse_options positional parameters to match - eval set dummy "$func_run_hooks_result"; shift + if func_run_hooks func_parse_options ${1+"$@"}; then + eval set dummy "$func_run_hooks_result"; shift + _G_rc_parse_options=: + fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break + _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in @@ -1704,7 +1759,10 @@ ;; --warnings|--warning|-W) - test $# = 0 && func_missing_arg $_G_opt && break + if test $# = 0 && func_missing_arg $_G_opt; then + _G_rc_parse_options=: + break + fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above @@ -1757,15 +1815,25 @@ shift ;; - --) break ;; + --) _G_rc_parse_options=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift + _G_match_parse_options=false + break + ;; esac + + $_G_match_parse_options && _G_rc_parse_options=: done - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result=$func_quote_for_eval_result + + if $_G_rc_parse_options; then + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result + fi + + $_G_rc_parse_options } @@ -1778,16 +1846,21 @@ { $debug_cmd + _G_rc_validate_options=false + # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - func_run_hooks func_validate_options ${1+"$@"} + if func_run_hooks func_validate_options ${1+"$@"}; then + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result + _G_rc_validate_options=: + fi # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result + $_G_rc_validate_options } @@ -2068,7 +2141,7 @@ compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.6 + version: $progname $scriptversion Debian-2.4.6-14 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` @@ -2270,6 +2343,8 @@ nonopt= preserve_args= + _G_rc_lt_options_prep=: + # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) @@ -2293,11 +2368,18 @@ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; + *) + _G_rc_lt_options_prep=false + ;; esac - # Pass back the list of options. - func_quote_for_eval ${1+"$@"} - libtool_options_prep_result=$func_quote_for_eval_result + if $_G_rc_lt_options_prep; then + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result + fi + + $_G_rc_lt_options_prep } func_add_hook func_options_prep libtool_options_prep @@ -2309,9 +2391,12 @@ { $debug_cmd + _G_rc_lt_parse_options=false + # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do + _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in @@ -2386,15 +2471,22 @@ func_append preserve_args " $_G_opt" ;; - # An option not handled by this hook function: - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"} ; shift + _G_match_lt_parse_options=false + break + ;; esac + $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done + if $_G_rc_lt_parse_options; then + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result + fi - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - libtool_parse_options_result=$func_quote_for_eval_result + $_G_rc_lt_parse_options } func_add_hook func_parse_options libtool_parse_options @@ -7275,10 +7367,13 @@ # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer + # -fuse-ld=* Linker select flags for GCC + # -static-* direct GCC to link specific libraries statically + # -fcilkplus Cilk Plus language extension features for C/C++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -specs=*|-fsanitize=*) + -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" diff -Nru libunwind-1.7.2/config/missing libunwind-1.8.1/config/missing --- libunwind-1.7.2/config/missing 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/config/missing 2024-02-22 14:09:14.000000000 +0000 @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2013-10-28.13; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2018 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -17,7 +17,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -101,9 +101,9 @@ exit $st fi -perl_URL=http://www.perl.org/ -flex_URL=http://flex.sourceforge.net/ -gnu_software_URL=http://www.gnu.org/software +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software program_details () { @@ -207,9 +207,9 @@ exit $st # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nru libunwind-1.7.2/config/test-driver libunwind-1.8.1/config/test-driver --- libunwind-1.7.2/config/test-driver 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/config/test-driver 2024-02-22 14:09:14.000000000 +0000 @@ -1,9 +1,9 @@ #! /bin/sh # test-driver - basic testsuite driver script. -scriptversion=2013-07-13.22; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# Copyright (C) 2011-2018 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,7 +16,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -140,9 +140,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -Nru libunwind-1.7.2/configure libunwind-1.8.1/configure --- libunwind-1.7.2/configure 2023-07-30 11:33:10.000000000 +0000 +++ libunwind-1.8.1/configure 2024-02-22 14:09:13.000000000 +0000 @@ -1,8 +1,30 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libunwind 1.7.2. +# Generated by GNU Autoconf 2.69 for libunwind 1.8.1. +# +# Report bugs to . +# +# +# This file is part of libunwind. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. # -# Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -274,7 +296,7 @@ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and libunwind-devel@nongnu.org + $as_echo "$0: Please tell bug-autoconf@gnu.org and https://github.com/libunwind/libunwind $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do @@ -590,9 +612,9 @@ # Identity of this package. PACKAGE_NAME='libunwind' PACKAGE_TARNAME='libunwind' -PACKAGE_VERSION='1.7.2' -PACKAGE_STRING='libunwind 1.7.2' -PACKAGE_BUGREPORT='libunwind-devel@nongnu.org' +PACKAGE_VERSION='1.8.1' +PACKAGE_STRING='libunwind 1.8.1' +PACKAGE_BUGREPORT='https://github.com/libunwind/libunwind' PACKAGE_URL='' ac_unique_file="src/mi/backtrace.c" @@ -636,36 +658,25 @@ am__EXEEXT_TRUE LTLIBOBJS LIBOBJS -CONFIG_WEAK_BACKTRACE_FALSE -CONFIG_WEAK_BACKTRACE_TRUE -CONFIG_TESTS_FALSE -CONFIG_TESTS_TRUE -CONFIG_DOCS_FALSE -CONFIG_DOCS_TRUE -LATEX2MAN -BACKTRACELIB -DLLIB enable_debug_frame enable_cxx_exceptions PKG_MAINTAINER PKG_EXTRA PKG_MINOR PKG_MAJOR -LIBCRTS LDFLAGS_NOSTARTFILES LDFLAGS_STATIC_LIBCXA ARCH arch build_arch -UNW_TESTDRIVER +COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_FALSE +COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_TRUE HAVE_ZLIB_FALSE HAVE_ZLIB_TRUE LIBZ HAVE_LZMA_FALSE HAVE_LZMA_TRUE LIBLZMA -SUPPORT_CXX_EXCEPTIONS_FALSE -SUPPORT_CXX_EXCEPTIONS_TRUE USE_DWARF_FALSE USE_DWARF_TRUE USE_ELFXX_FALSE @@ -690,8 +701,6 @@ ARCH_RISCV_TRUE ARCH_S390X_FALSE ARCH_S390X_TRUE -ARCH_TILEGX_FALSE -ARCH_TILEGX_TRUE ARCH_SH_FALSE ARCH_SH_TRUE ARCH_PPC64_FALSE @@ -714,18 +723,38 @@ ARCH_AARCH64_TRUE REMOTE_ONLY_FALSE REMOTE_ONLY_TRUE -NO_PTRACE_TEST_FALSE -NO_PTRACE_TEST_TRUE +CROSS_BUILD_FALSE +CROSS_BUILD_TRUE +XFAIL_PTRACE_TEST_FALSE +XFAIL_PTRACE_TEST_TRUE +ENABLE_UNW_RESUME_TESTS_FALSE +ENABLE_UNW_RESUME_TESTS_TRUE +CONFIG_DOCS_FALSE +CONFIG_DOCS_TRUE +LATEX2MAN +SUPPORT_CXX_EXCEPTIONS_FALSE +SUPPORT_CXX_EXCEPTIONS_TRUE +UNW_TESTDRIVER +BACKTRACELIB +PTHREADS_LIB +DLLIB +CONFIG_TESTS_FALSE +CONFIG_TESTS_TRUE BUILD_UNWIND_HEADER_FALSE BUILD_UNWIND_HEADER_TRUE +CONFIG_WEAK_BACKTRACE_FALSE +CONFIG_WEAK_BACKTRACE_TRUE BUILD_SETJMP_FALSE BUILD_SETJMP_TRUE +BUILD_NTO_FALSE +BUILD_NTO_TRUE BUILD_PTRACE_FALSE BUILD_PTRACE_TRUE BUILD_COREDUMP_FALSE BUILD_COREDUMP_TRUE USE_ALTIVEC_FALSE USE_ALTIVEC_TRUE +LIBCRTS am__fastdepCCAS_FALSE am__fastdepCCAS_TRUE CCASDEPMODE @@ -768,7 +797,6 @@ AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE -am__quote am__include DEPDIR OBJEXT @@ -858,7 +886,8 @@ PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR -SHELL' +SHELL +am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking @@ -875,21 +904,22 @@ enable_libtool_lock enable_coredump enable_ptrace +enable_nto enable_setjmp -enable_documentation -enable_tests enable_weak_backtrace enable_unwind_header +enable_per_thread_cache +enable_tests +with_testdriver enable_debug enable_cxx_exceptions +enable_documentation enable_debug_frame enable_block_signals enable_conservative_checks enable_msabi_support enable_minidebuginfo enable_zlibdebuginfo -enable_per_thread_cache -with_testdriver ' ac_precious_vars='build_alias host_alias @@ -1457,7 +1487,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libunwind 1.7.2 to adapt to many kinds of systems. +\`configure' configures libunwind 1.8.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1529,7 +1559,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libunwind 1.7.2:";; + short | recursive ) echo "Configuration of libunwind 1.8.1:";; esac cat <<\_ACEOF @@ -1551,16 +1581,24 @@ --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) - --enable-coredump building libunwind-coredump library - --enable-ptrace building libunwind-ptrace library - --enable-setjmp building libunwind-setjmp library - --disable-documentation Disable generating the man pages - --disable-tests Disable tests build + --enable-coredump build libunwind-coredump library + [default=autodetect] + --enable-ptrace build libunwind-ptrace library [default=autodetect] + --enable-nto build libunwind-nto library [default=autodetect] + --enable-setjmp build libunwind-setjmp library [default=autodetect] --disable-weak-backtrace - Do not provide the weak 'backtrace' symbol. - --disable-unwind-header Do not export the 'unwind.h' header - --enable-debug turn on debug support (slows down execution) + do not provide the weak 'backtrace' symbol + [default=no] + --disable-unwind-header do not export the 'unwind.h' header [default=no] + --enable-per-thread-cache + build with support for UNW_CACHE_PER_THREAD (which + imposes a high TLS memory usage) [default=no] + --disable-tests disable building tests [default=no] + --enable-debug enable debug support (slows down execution) + [default=no] --enable-cxx-exceptions use libunwind to handle C++ exceptions + [default=autodetect] + --enable-documentation enable generating the man pages [default=yes] --enable-debug-frame Load the ".debug_frame" section if available --enable-block-signals Block signals before performing mutex operations --enable-conservative-checks @@ -1568,9 +1606,6 @@ --enable-msabi-support Enables support for Microsoft ABI extensions --enable-minidebuginfo Enables support for LZMA-compressed symbol tables --enable-zlibdebuginfo Enables support for ZLIB-compressed symbol tables - --enable-per-thread-cache - build with support for UNW_CACHE_PER_THREAD (which - imposes a high TLS memory usage) (default: disabled) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1606,7 +1641,7 @@ Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. -Report bugs to . +Report bugs to . _ACEOF ac_status=$? fi @@ -1669,12 +1704,34 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libunwind configure 1.7.2 +libunwind configure 1.8.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. + + + This file is part of libunwind. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + _ACEOF exit fi @@ -2065,97 +2122,6 @@ } # ac_fn_cxx_try_link -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ----------------------------------------- ## -## Report this to libunwind-devel@nongnu.org ## -## ----------------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2393,6 +2359,97 @@ } # ac_fn_c_compute_int +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ----------------------------------------------------- ## +## Report this to https://github.com/libunwind/libunwind ## +## ----------------------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- # Tries to find if the field MEMBER exists in type AGGR, after including @@ -2499,7 +2556,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libunwind $as_me 1.7.2, which was +It was created by libunwind $as_me 1.8.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2988,7 +3045,7 @@ test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- -am__api_version='1.15' +am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -3474,7 +3531,7 @@ # Define the identity of the package. PACKAGE='libunwind' - VERSION='1.7.2' + VERSION='1.8.1' cat >>confdefs.h <<_ACEOF @@ -3504,8 +3561,8 @@ # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: -# -# +# +# mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The @@ -3556,7 +3613,7 @@ Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . +that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM @@ -4483,45 +4540,45 @@ ac_config_commands="$ac_config_commands depfiles" - -am_make=${MAKE-make} -cat > confinc << 'END' +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' am__doit: - @echo this is the am__doit target + @echo this is the am__doit target >confinc.out .PHONY: am__doit END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : @@ -6860,7 +6917,7 @@ fi : ${AR=ar} -: ${AR_FLAGS=cru} +: ${AR_FLAGS=cr} @@ -7361,11 +7418,8 @@ test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -8584,8 +8638,8 @@ _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 + echo "$AR cr libconftest.a conftest.o" >&5 + $AR cr libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF @@ -9725,6 +9779,12 @@ lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -13667,7 +13727,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no @@ -14159,7 +14219,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -14224,7 +14284,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -14563,7 +14623,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support @@ -14647,7 +14707,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -14658,7 +14718,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' @@ -16738,243 +16798,6 @@ -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __uc_get_grs in -luca" >&5 -$as_echo_n "checking for __uc_get_grs in -luca... " >&6; } -if ${ac_cv_lib_uca___uc_get_grs+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-luca $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char __uc_get_grs (); -int -main () -{ -return __uc_get_grs (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_uca___uc_get_grs=yes -else - ac_cv_lib_uca___uc_get_grs=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_uca___uc_get_grs" >&5 -$as_echo "$ac_cv_lib_uca___uc_get_grs" >&6; } -if test "x$ac_cv_lib_uca___uc_get_grs" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBUCA 1 -_ACEOF - - LIBS="-luca $LIBS" - -fi - -OLD_LIBS=${LIBS} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if ${ac_cv_search_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -for ac_lib in '' dl; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_dlopen=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_dlopen+:} false; then : - break -fi -done -if ${ac_cv_search_dlopen+:} false; then : - -else - ac_cv_search_dlopen=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } -ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -LIBS=${OLD_LIBS} -case "$ac_cv_search_dlopen" in - -l*) DLLIB=$ac_cv_search_dlopen;; - *) DLLIB="";; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -for ac_header in asm/ptrace_offsets.h asm/ptrace.h asm/vsyscall.h endian.h sys/endian.h \ - sys/param.h execinfo.h ia64intrin.h sys/uc_access.h unistd.h signal.h \ - sys/types.h sys/procfs.h sys/ptrace.h sys/syscall.h byteswap.h elf.h \ - sys/elf.h link.h sys/link.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : @@ -17143,8 +16966,29 @@ +{ $as_echo "$as_me:${as_lineno-$LINENO}: --- Checking for header files ---" >&5 +$as_echo "$as_me: --- Checking for header files ---" >&6;} +for ac_header in asm/ptrace_offsets.h asm/ptrace.h asm/vsyscall.h endian.h sys/endian.h \ + sys/param.h execinfo.h ia64intrin.h sys/uc_access.h unistd.h signal.h \ + sys/types.h sys/procfs.h sys/ptrace.h sys/syscall.h byteswap.h elf.h \ + sys/elf.h link.h sys/link.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + CPPFLAGS="${CPPFLAGS} -D_GNU_SOURCE" +{ $as_echo "$as_me:${as_lineno-$LINENO}: --- Checking for available types ---" >&5 +$as_echo "$as_me: --- Checking for available types ---" >&6;} ac_fn_c_check_member "$LINENO" "struct dl_phdr_info" "dlpi_subs" "ac_cv_member_struct_dl_phdr_info_dlpi_subs" "#include " if test "x$ac_cv_member_struct_dl_phdr_info_dlpi_subs" = xyes; then : @@ -17214,11 +17058,340 @@ fi -ac_fn_c_check_decl "$LINENO" "PTRACE_POKEUSER" "ac_cv_have_decl_PTRACE_POKEUSER" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include +{ $as_echo "$as_me:${as_lineno-$LINENO}: --- Checking for libraries ---" >&5 +$as_echo "$as_me: --- Checking for libraries ---" >&6;} +save_LDFLAGS="$LDFLAGS" +save_LIBS="$LIBS" +LDFLAGS="${LDFLAGS} -nostdlib" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing _Unwind_Resume" >&5 +$as_echo_n "checking for library containing _Unwind_Resume... " >&6; } +if ${ac_cv_search__Unwind_Resume+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char _Unwind_Resume (); +int +main () +{ +return _Unwind_Resume (); + ; + return 0; +} +_ACEOF +for ac_lib in '' gcc_s gcc; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib -lc + $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search__Unwind_Resume=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search__Unwind_Resume+:} false; then : + break +fi +done +if ${ac_cv_search__Unwind_Resume+:} false; then : + +else + ac_cv_search__Unwind_Resume=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search__Unwind_Resume" >&5 +$as_echo "$ac_cv_search__Unwind_Resume" >&6; } +ac_res=$ac_cv_search__Unwind_Resume +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + if test "$ac_cv_search__Unwind_Resume" != "none required"; then : + LIBCRTS="$ac_cv_search__Unwind_Resume" + +fi +fi + +LIBS="$save_LIBS" +LDFLAGS="$save_LDFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing __uc_get_grs" >&5 +$as_echo_n "checking for library containing __uc_get_grs... " >&6; } +if ${ac_cv_search___uc_get_grs+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char __uc_get_grs (); +int +main () +{ +return __uc_get_grs (); + ; + return 0; +} +_ACEOF +for ac_lib in '' uca; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search___uc_get_grs=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search___uc_get_grs+:} false; then : + break +fi +done +if ${ac_cv_search___uc_get_grs+:} false; then : + +else + ac_cv_search___uc_get_grs=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search___uc_get_grs" >&5 +$as_echo "$ac_cv_search___uc_get_grs" >&6; } +ac_res=$ac_cv_search___uc_get_grs +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + +for ac_func in dl_iterate_phdr dl_phdr_removals_counter dlmodinfo getunwind \ + ttrace mincore pipe2 sigaltstack execvpe +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if building with AltiVec" >&5 +$as_echo_n "checking if building with AltiVec... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef __ALTIVEC__ +# error choke +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + use_altivec=yes +else + use_altivec=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test x$use_altivec = xyes; then + USE_ALTIVEC_TRUE= + USE_ALTIVEC_FALSE='#' +else + USE_ALTIVEC_TRUE='#' + USE_ALTIVEC_FALSE= +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_altivec" >&5 +$as_echo "$use_altivec" >&6; } + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifndef __powerpc64__ +# error choke #endif -#include + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ppc_bits=64 +else + ppc_bits=32 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + + + case $build_cpu in #( + aarch64*) : + build_arch=aarch64 ;; #( + arm*) : + build_arch=arm ;; #( + i?86) : + build_arch=x86 ;; #( + hppa*) : + build_arch=hppa ;; #( + mips*) : + build_arch=mips ;; #( + powerpc*) : + build_arch=ppc$ppc_bits ;; #( + sh*) : + build_arch=sh ;; #( + amd64) : + build_arch=x86_64 ;; #( + riscv*) : + build_arch=riscv ;; #( + loongarch64*) : + build_arch=loongarch64 ;; #( + *) : + build_arch=$build_cpu ;; +esac + + + case $host_cpu in #( + aarch64*) : + host_arch=aarch64 ;; #( + arm*) : + host_arch=arm ;; #( + i?86) : + host_arch=x86 ;; #( + hppa*) : + host_arch=hppa ;; #( + mips*) : + host_arch=mips ;; #( + powerpc*) : + host_arch=ppc$ppc_bits ;; #( + sh*) : + host_arch=sh ;; #( + amd64) : + host_arch=x86_64 ;; #( + riscv*) : + host_arch=riscv ;; #( + loongarch64*) : + host_arch=loongarch64 ;; #( + *) : + host_arch=$host_cpu ;; +esac + + + case $target_cpu in #( + aarch64*) : + target_arch=aarch64 ;; #( + arm*) : + target_arch=arm ;; #( + i?86) : + target_arch=x86 ;; #( + hppa*) : + target_arch=hppa ;; #( + mips*) : + target_arch=mips ;; #( + powerpc*) : + target_arch=ppc$ppc_bits ;; #( + sh*) : + target_arch=sh ;; #( + amd64) : + target_arch=x86_64 ;; #( + riscv*) : + target_arch=riscv ;; #( + loongarch64*) : + target_arch=loongarch64 ;; #( + *) : + target_arch=$target_cpu ;; +esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libunwind-coredump should be built" >&5 +$as_echo_n "checking if libunwind-coredump should be built... " >&6; } +# Check whether --enable-coredump was given. +if test "${enable_coredump+set}" = set; then : + enableval=$enable_coredump; +else + enable_coredump="check" + +fi + +if test "$enable_coredump" = "check"; then : + case $host_arch in #( + aarch64*|arm*|mips*|sh*|x86*|riscv*|loongarch64) : + enable_coredump=yes ;; #( + *) : + enable_coredump=no ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_coredump" >&5 +$as_echo "$enable_coredump" >&6; } + if test x$enable_coredump = xyes; then + BUILD_COREDUMP_TRUE= + BUILD_COREDUMP_FALSE='#' +else + BUILD_COREDUMP_TRUE='#' + BUILD_COREDUMP_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libunwind-ptrace should be built" >&5 +$as_echo_n "checking if libunwind-ptrace should be built... " >&6; } +# Check whether --enable-ptrace was given. +if test "${enable_ptrace+set}" = set; then : + enableval=$enable_ptrace; +else + enable_ptrace="check" + +fi + +if test "$enable_ptrace" != "no"; then : + if test "$ac_cv_header_sys_ptrace_h" = "yes"; then : + enable_ptrace=yes +elif test "$enable_ptrace" != "check"; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--enable-ptrace given but + ptrace not supported on target +See \`config.log' for more details" "$LINENO" 5; } +else + enable_ptrace="no" + +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_ptrace" >&5 +$as_echo "$enable_ptrace" >&6; } + if test x$enable_ptrace = xyes; then + BUILD_PTRACE_TRUE= + BUILD_PTRACE_FALSE='#' +else + BUILD_PTRACE_TRUE='#' + BUILD_PTRACE_FALSE= +fi + +if test -z "$BUILD_PTRACE_TRUE"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: --- Checking for ptrace symbols ---" >&5 +$as_echo "$as_me: --- Checking for ptrace symbols ---" >&6;} + ac_fn_c_check_decl "$LINENO" "PTRACE_POKEUSER" "ac_cv_have_decl_PTRACE_POKEUSER" "$ac_includes_default + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PTRACE_POKEUSER" = xyes; then : @@ -17231,10 +17404,10 @@ #define HAVE_DECL_PTRACE_POKEUSER $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PTRACE_POKEDATA" "ac_cv_have_decl_PTRACE_POKEDATA" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PTRACE_POKEDATA" = xyes; then : @@ -17247,10 +17420,10 @@ #define HAVE_DECL_PTRACE_POKEDATA $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PTRACE_SETREGSET" "ac_cv_have_decl_PTRACE_SETREGSET" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PTRACE_SETREGSET" = xyes; then : @@ -17263,10 +17436,10 @@ #define HAVE_DECL_PTRACE_SETREGSET $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PTRACE_TRACEME" "ac_cv_have_decl_PTRACE_TRACEME" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PTRACE_TRACEME" = xyes; then : @@ -17279,10 +17452,10 @@ #define HAVE_DECL_PTRACE_TRACEME $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PTRACE_CONT" "ac_cv_have_decl_PTRACE_CONT" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PTRACE_CONT" = xyes; then : @@ -17295,10 +17468,10 @@ #define HAVE_DECL_PTRACE_CONT $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PTRACE_SINGLESTEP" "ac_cv_have_decl_PTRACE_SINGLESTEP" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PTRACE_SINGLESTEP" = xyes; then : @@ -17311,10 +17484,10 @@ #define HAVE_DECL_PTRACE_SINGLESTEP $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PTRACE_SYSCALL" "ac_cv_have_decl_PTRACE_SYSCALL" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PTRACE_SYSCALL" = xyes; then : @@ -17327,10 +17500,10 @@ #define HAVE_DECL_PTRACE_SYSCALL $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PT_IO" "ac_cv_have_decl_PT_IO" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PT_IO" = xyes; then : @@ -17343,10 +17516,10 @@ #define HAVE_DECL_PT_IO $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PT_GETREGS" "ac_cv_have_decl_PT_GETREGS" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PT_GETREGS" = xyes; then : @@ -17359,10 +17532,10 @@ #define HAVE_DECL_PT_GETREGS $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PT_GETFPREGS" "ac_cv_have_decl_PT_GETFPREGS" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PT_GETFPREGS" = xyes; then : @@ -17375,10 +17548,10 @@ #define HAVE_DECL_PT_GETFPREGS $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PT_CONTINUE" "ac_cv_have_decl_PT_CONTINUE" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PT_CONTINUE" = xyes; then : @@ -17391,10 +17564,10 @@ #define HAVE_DECL_PT_CONTINUE $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PT_TRACE_ME" "ac_cv_have_decl_PT_TRACE_ME" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PT_TRACE_ME" = xyes; then : @@ -17407,10 +17580,10 @@ #define HAVE_DECL_PT_TRACE_ME $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PT_STEP" "ac_cv_have_decl_PT_STEP" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PT_STEP" = xyes; then : @@ -17423,10 +17596,10 @@ #define HAVE_DECL_PT_STEP $ac_have_decl _ACEOF ac_fn_c_check_decl "$LINENO" "PT_SYSCALL" "ac_cv_have_decl_PT_SYSCALL" "$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include + #if HAVE_SYS_TYPES_H + #include + #endif + #include " if test "x$ac_cv_have_decl_PT_SYSCALL" = xyes; then : @@ -17440,217 +17613,413 @@ _ACEOF -for ac_func in dl_iterate_phdr dl_phdr_removals_counter dlmodinfo getunwind \ - ttrace mincore pipe2 sigaltstack -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libunwind-nto should be built" >&5 +$as_echo_n "checking if libunwind-nto should be built... " >&6; } +# Check whether --enable-nto was given. +if test "${enable_nto+set}" = set; then : + enableval=$enable_nto; +else + enable_nto="check" fi -done +if test "$enable_nto" != "no"; then : + ac_fn_c_check_header_mongrel "$LINENO" "sys/neutrino.h" "ac_cv_header_sys_neutrino_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_neutrino_h" = xyes; then : + enable_nto=yes +else + enable_nto=no +fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if building with AltiVec" >&5 -$as_echo_n "checking if building with AltiVec... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __ALTIVEC__ -# error choke -#endif -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - use_altivec=yes +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_nto" >&5 +$as_echo "$enable_nto" >&6; } + if test x$enable_nto = xyes; then + BUILD_NTO_TRUE= + BUILD_NTO_FALSE='#' else - use_altivec=no + BUILD_NTO_TRUE='#' + BUILD_NTO_FALSE= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test x$use_altivec = xyes; then - USE_ALTIVEC_TRUE= - USE_ALTIVEC_FALSE='#' + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libunwind-setjmp should be built" >&5 +$as_echo_n "checking if libunwind-setjmp should be built... " >&6; } +# Check whether --enable-setjmp was given. +if test "${enable_setjmp+set}" = set; then : + enableval=$enable_setjmp; else - USE_ALTIVEC_TRUE='#' - USE_ALTIVEC_FALSE= + enable_setjmp=check + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_altivec" >&5 -$as_echo "$use_altivec" >&6; } +if test "$enable_setjmp" = check; then : + if test x$target_arch = x$host_arch; then : + enable_setjmp=yes +else + enable_setjmp=no +fi + if expr x$target_os : xnto-qnx >/dev/null; then : + enable_setjmp=no +fi -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_setjmp" >&5 +$as_echo "$enable_setjmp" >&6; } + if test x$enable_setjmp = xyes; then + BUILD_SETJMP_TRUE= + BUILD_SETJMP_FALSE='#' +else + BUILD_SETJMP_TRUE='#' + BUILD_SETJMP_FALSE= +fi -#ifndef __powerpc64__ -# error choke -#endif -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ppc_bits=64 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if weak-backtrace is enabled" >&5 +$as_echo_n "checking if weak-backtrace is enabled... " >&6; } +# Check whether --enable-weak-backtrace was given. +if test "${enable_weak_backtrace+set}" = set; then : + enableval=$enable_weak_backtrace; else - ppc_bits=32 + enable_weak_backtrace=yes + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_weak_backtrace" >&5 +$as_echo "$enable_weak_backtrace" >&6; } + if test "x$enable_weak_backtrace" = xyes; then + CONFIG_WEAK_BACKTRACE_TRUE= + CONFIG_WEAK_BACKTRACE_FALSE='#' +else + CONFIG_WEAK_BACKTRACE_TRUE='#' + CONFIG_WEAK_BACKTRACE_FALSE= +fi +if test -z "$CONFIG_WEAK_BACKTRACE_TRUE"; then : - case $build_cpu in #( - aarch64*) : - build_arch=aarch64 ;; #( - arm*) : - build_arch=arm ;; #( - i?86) : - build_arch=x86 ;; #( - hppa*) : - build_arch=hppa ;; #( - mips*) : - build_arch=mips ;; #( - powerpc*) : - build_arch=ppc$ppc_bits ;; #( - sh*) : - build_arch=sh ;; #( - amd64) : - build_arch=x86_64 ;; #( - tile*) : - build_arch=tilegx ;; #( - riscv*) : - build_arch=riscv ;; #( - loongarch64*) : - build_arch=loongarch64 ;; #( - *) : - build_arch=$build_cpu ;; -esac +$as_echo "#define CONFIG_WEAK_BACKTRACE 1" >>confdefs.h - case $host_cpu in #( - aarch64*) : - host_arch=aarch64 ;; #( - arm*) : - host_arch=arm ;; #( - i?86) : - host_arch=x86 ;; #( - hppa*) : - host_arch=hppa ;; #( - mips*) : - host_arch=mips ;; #( - powerpc*) : - host_arch=ppc$ppc_bits ;; #( - sh*) : - host_arch=sh ;; #( - amd64) : - host_arch=x86_64 ;; #( - tile*) : - host_arch=tilegx ;; #( - riscv*) : - host_arch=riscv ;; #( - loongarch64*) : - host_arch=loongarch64 ;; #( - *) : - host_arch=$host_cpu ;; -esac +fi - case $target_cpu in #( - aarch64*) : - target_arch=aarch64 ;; #( - arm*) : - target_arch=arm ;; #( - i?86) : - target_arch=x86 ;; #( - hppa*) : - target_arch=hppa ;; #( - mips*) : - target_arch=mips ;; #( - powerpc*) : - target_arch=ppc$ppc_bits ;; #( - sh*) : - target_arch=sh ;; #( - amd64) : - target_arch=x86_64 ;; #( - tile*) : - target_arch=tilegx ;; #( - riscv*) : - target_arch=riscv ;; #( - loongarch64*) : - target_arch=loongarch64 ;; #( - *) : - target_arch=$target_cpu ;; -esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if unwind.h should be exported" >&5 +$as_echo_n "checking if unwind.h should be exported... " >&6; } +# Check whether --enable-unwind-header was given. +if test "${enable_unwind_header+set}" = set; then : + enableval=$enable_unwind_header; +else + enable_unwind_header=yes -# Check for Android -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Android" >&5 -$as_echo_n "checking for Android... " >&6; } -android="no" -case "$host_os" in - *android*) - android="yes" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; -esac +fi -# Check whether --enable-coredump was given. -if test "${enable_coredump+set}" = set; then : - enableval=$enable_coredump; +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_unwind_header" >&5 +$as_echo "$enable_unwind_header" >&6; } + if test "x$enable_unwind_header" = xyes; then + BUILD_UNWIND_HEADER_TRUE= + BUILD_UNWIND_HEADER_FALSE='#' else - case $host_arch in #( - aarch64*|arm*|mips*|sh*|x86*|tile*|riscv*|loongarch64) : - enable_coredump=yes ;; #( - *) : - enable_coredump=no ;; -esac + BUILD_UNWIND_HEADER_TRUE='#' + BUILD_UNWIND_HEADER_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support UNW_CACHE_PER_THREAD" >&5 +$as_echo_n "checking whether to support UNW_CACHE_PER_THREAD... " >&6; } +# Check whether --enable-per-thread-cache was given. +if test "${enable_per_thread_cache+set}" = set; then : + enableval=$enable_per_thread_cache; +else + enable_per_thread_cache=no fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_per_thread_cache" >&5 +$as_echo "$enable_per_thread_cache" >&6; } +if test x$enable_per_thread_cache = xyes; then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should build libunwind-coredump" >&5 -$as_echo_n "checking if we should build libunwind-coredump... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_coredump" >&5 -$as_echo "$enable_coredump" >&6; } +$as_echo "#define HAVE___CACHE_PER_THREAD 1" >>confdefs.h -# Check whether --enable-ptrace was given. -if test "${enable_ptrace+set}" = set; then : - enableval=$enable_ptrace; + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if testsuite should be built" >&5 +$as_echo_n "checking if testsuite should be built... " >&6; } +# Check whether --enable-tests was given. +if test "${enable_tests+set}" = set; then : + enableval=$enable_tests; else - ac_fn_c_check_header_mongrel "$LINENO" "sys/ptrace.h" "ac_cv_header_sys_ptrace_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_ptrace_h" = xyes; then : - enable_ptrace=yes + enable_tests=yes + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_tests" >&5 +$as_echo "$enable_tests" >&6; } + if test x$enable_tests = xyes; then + CONFIG_TESTS_TRUE= + CONFIG_TESTS_FALSE='#' +else + CONFIG_TESTS_TRUE='#' + CONFIG_TESTS_FALSE= +fi + +if test -z "$CONFIG_TESTS_TRUE"; then : + + old_LIBS="$LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: --- Checking for extra libraries linked to tests ---" >&5 +$as_echo "$as_me: --- Checking for extra libraries linked to tests ---" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +$as_echo_n "checking for library containing dlopen... " >&6; } +if ${ac_cv_search_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 else - enable_ptrace=no + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_dlopen=$ac_res fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_dlopen+:} false; then : + break +fi +done +if ${ac_cv_search_dlopen+:} false; then : +else + ac_cv_search_dlopen=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +$as_echo "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + if test "$ac_cv_search_dlopen" != "none required"; then : + DLLIB="$ac_cv_search_dlopen" +fi +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_create" >&5 +$as_echo_n "checking for library containing pthread_create... " >&6; } +if ${ac_cv_search_pthread_create+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_create (); +int +main () +{ +return pthread_create (); + ; + return 0; +} +_ACEOF +for ac_lib in '' pthread; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_pthread_create=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_pthread_create+:} false; then : + break fi +done +if ${ac_cv_search_pthread_create+:} false; then : +else + ac_cv_search_pthread_create=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_create" >&5 +$as_echo "$ac_cv_search_pthread_create" >&6; } +ac_res=$ac_cv_search_pthread_create +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + if test "$ac_cv_search_pthread_create" != "none required"; then : + PTHREADS_LIB="$ac_cv_search_pthread_create" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should build libunwind-ptrace" >&5 -$as_echo_n "checking if we should build libunwind-ptrace... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_ptrace" >&5 -$as_echo "$enable_ptrace" >&6; } +fi +fi -# Check whether --enable-setjmp was given. -if test "${enable_setjmp+set}" = set; then : - enableval=$enable_setjmp; + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 +$as_echo_n "checking for library containing backtrace... " >&6; } +if ${ac_cv_search_backtrace+:} false; then : + $as_echo_n "(cached) " >&6 else - if test x$target_arch = x$host_arch; then : - enable_setjmp=yes + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char backtrace (); +int +main () +{ +return backtrace (); + ; + return 0; +} +_ACEOF +for ac_lib in '' execinfo; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_backtrace=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_backtrace+:} false; then : + break +fi +done +if ${ac_cv_search_backtrace+:} false; then : + else - enable_setjmp=no + ac_cv_search_backtrace=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 +$as_echo "$ac_cv_search_backtrace" >&6; } +ac_res=$ac_cv_search_backtrace +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + if test "$ac_cv_search_backtrace" != "none required"; then : + BACKTRACELIB="$ac_cv_search_backtrace" + +fi fi + LIBS="$old_LIBS" + ac_config_files="$ac_config_files tests/Makefile" + + ac_config_files="$ac_config_files tests/check-namespace.sh" + + +fi + +# Check whether --with-testdriver was given. +if test "${with_testdriver+set}" = set; then : + withval=$with_testdriver; +else + with_testdriver=\$\(top_srcdir\)/config/test-driver +fi + +UNW_TESTDRIVER=$with_testdriver + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if debug support should be built" >&5 +$as_echo_n "checking if debug support should be built... " >&6; } +# Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; +else + enable_debug=no + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug" >&5 +$as_echo "$enable_debug" >&6; } +if test x$enable_debug = xyes; then : + CPPFLAGS="${CPPFLAGS} -DDEBUG" +else + CPPFLAGS="${CPPFLAGS} -DNDEBUG" + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if C++ exception support should be built" >&5 +$as_echo_n "checking if C++ exception support should be built... " >&6; } +# Check whether --enable-cxx_exceptions was given. +if test "${enable_cxx_exceptions+set}" = set; then : + enableval=$enable_cxx_exceptions; +else + enable_cxx_exceptions=check + +fi + +if test $enable_cxx_exceptions = check; then : + case $target_arch in #( + aarch64*|arm*|mips*|x86*|s390x*|loongarch64) : + enable_cxx_exceptions=no ;; #( + *) : + enable_cxx_exceptions=yes ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_cxx_exceptions" >&5 +$as_echo "$enable_cxx_exceptions" >&6; } + if test x$enable_cxx_exceptions = xyes; then + SUPPORT_CXX_EXCEPTIONS_TRUE= + SUPPORT_CXX_EXCEPTIONS_FALSE='#' +else + SUPPORT_CXX_EXCEPTIONS_TRUE='#' + SUPPORT_CXX_EXCEPTIONS_FALSE= fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if documentation should be built" >&5 +$as_echo_n "checking if documentation should be built... " >&6; } # Check whether --enable-documentation was given. if test "${enable_documentation+set}" = set; then : enableval=$enable_documentation; @@ -17658,40 +18027,87 @@ enable_documentation=yes fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_documentation" >&5 +$as_echo "$enable_documentation" >&6; } +# Extract the first word of "latex2man", so it can be a program name with args. +set dummy latex2man; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LATEX2MAN+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $LATEX2MAN in + [\\/]* | ?:[\\/]*) + ac_cv_path_LATEX2MAN="$LATEX2MAN" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LATEX2MAN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -# Check whether --enable-tests was given. -if test "${enable_tests+set}" = set; then : - enableval=$enable_tests; + ;; +esac +fi +LATEX2MAN=$ac_cv_path_LATEX2MAN +if test -n "$LATEX2MAN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEX2MAN" >&5 +$as_echo "$LATEX2MAN" >&6; } else - enable_tests=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -# Check whether --enable-weak-backtrace was given. -if test "${enable_weak_backtrace+set}" = set; then : - enableval=$enable_weak_backtrace; -else - enable_weak_backtrace=yes -fi +if test "x$LATEX2MAN" = "x" && test "x$enable_documentation" != "xno"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: latex2man not found. Install latex2man. Disabling docs." >&5 +$as_echo "$as_me: WARNING: latex2man not found. Install latex2man. Disabling docs." >&2;} + enable_documentation="no"; -# Check whether --enable-unwind-header was given. -if test "${enable_unwind_header+set}" = set; then : - enableval=$enable_unwind_header; +fi + if test x$enable_documentation != xno; then + CONFIG_DOCS_TRUE= + CONFIG_DOCS_FALSE='#' else - enable_unwind_header=yes + CONFIG_DOCS_TRUE='#' + CONFIG_DOCS_FALSE= fi +if test -z "$CONFIG_DOCS_TRUE"; then : + ac_config_files="$ac_config_files doc/Makefile doc/common.tex" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should export unwind.h" >&5 -$as_echo_n "checking if we should export unwind.h... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_unwind_header" >&5 -$as_echo "$enable_unwind_header" >&6; } +fi + +# Enable tests built around unw_resume, which is not supported on all targets +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should enable unw_resume tests" >&5 +$as_echo_n "checking if we should enable unw_resume tests... " >&6; } +case $target_os in #( + nto-qnx*) : + enable_unw_resume_tests=no ;; #( + *) : + enable_unw_resume_tests=yes ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_unw_resume_tests" >&5 +$as_echo "$enable_unw_resume_tests" >&6; } + if test x$enable_unw_resume_tests = xyes; then + ENABLE_UNW_RESUME_TESTS_TRUE= + ENABLE_UNW_RESUME_TESTS_FALSE='#' +else + ENABLE_UNW_RESUME_TESTS_TRUE='#' + ENABLE_UNW_RESUME_TESTS_FALSE= +fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should build libunwind-setjmp" >&5 -$as_echo_n "checking if we should build libunwind-setjmp... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_setjmp" >&5 -$as_echo "$enable_setjmp" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for build architecture" >&5 $as_echo_n "checking for build architecture... " >&6; } @@ -17710,44 +18126,20 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $target_os" >&5 $as_echo "$target_os" >&6; } - if test x$enable_coredump = xyes; then - BUILD_COREDUMP_TRUE= - BUILD_COREDUMP_FALSE='#' -else - BUILD_COREDUMP_TRUE='#' - BUILD_COREDUMP_FALSE= -fi - - if test x$enable_ptrace = xyes; then - BUILD_PTRACE_TRUE= - BUILD_PTRACE_FALSE='#' -else - BUILD_PTRACE_TRUE='#' - BUILD_PTRACE_FALSE= -fi - - if test x$enable_setjmp = xyes; then - BUILD_SETJMP_TRUE= - BUILD_SETJMP_FALSE='#' + if echo $CFLAGS | grep -q '\-m32\>'; then + XFAIL_PTRACE_TEST_TRUE= + XFAIL_PTRACE_TEST_FALSE='#' else - BUILD_SETJMP_TRUE='#' - BUILD_SETJMP_FALSE= -fi - - if test "x$enable_unwind_header" = xyes; then - BUILD_UNWIND_HEADER_TRUE= - BUILD_UNWIND_HEADER_FALSE='#' -else - BUILD_UNWIND_HEADER_TRUE='#' - BUILD_UNWIND_HEADER_FALSE= + XFAIL_PTRACE_TEST_TRUE='#' + XFAIL_PTRACE_TEST_FALSE= fi if test x$build_arch != x$host_arch; then - NO_PTRACE_TEST_TRUE= - NO_PTRACE_TEST_FALSE='#' + CROSS_BUILD_TRUE= + CROSS_BUILD_FALSE='#' else - NO_PTRACE_TEST_TRUE='#' - NO_PTRACE_TEST_FALSE= + CROSS_BUILD_TRUE='#' + CROSS_BUILD_FALSE= fi if test x$target_arch != x$host_arch; then @@ -17838,14 +18230,6 @@ ARCH_SH_FALSE= fi - if test x$target_arch = xtilegx; then - ARCH_TILEGX_TRUE= - ARCH_TILEGX_FALSE='#' -else - ARCH_TILEGX_TRUE='#' - ARCH_TILEGX_FALSE= -fi - if test x$target_arch = xs390x; then ARCH_S390X_TRUE= ARCH_S390X_FALSE='#' @@ -17913,14 +18297,19 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF helper width" >&5 $as_echo_n "checking for ELF helper width... " >&6; } -case "${target_arch}" in -(arm|hppa|ppc32|x86|sh) use_elf32=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: 32" >&5 -$as_echo "32" >&6; };; -(aarch64|ia64|ppc64|x86_64|s390x|tilegx) use_elf64=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: 64" >&5 -$as_echo "64" >&6; };; -(mips|riscv|loongarch64) use_elfxx=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: xx" >&5 -$as_echo "xx" >&6; };; -*) as_fn_error $? "Unknown ELF target: ${target_arch}" "$LINENO" 5 +case ${target_arch} in #( + arm|hppa|ppc32|x86|sh) : + use_elf32=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: 32" >&5 +$as_echo "32" >&6; } ;; #( + aarch64|ia64|ppc64|x86_64|s390x) : + use_elf64=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: 64" >&5 +$as_echo "64" >&6; } ;; #( + mips|riscv|loongarch64) : + use_elfxx=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: xx" >&5 +$as_echo "xx" >&6; } ;; #( + *) : + as_fn_error $? "Unknown ELF target: ${target_arch}" "$LINENO" 5 + ;; esac if test x$use_elf32 = xyes; then USE_ELF32_TRUE= @@ -17976,54 +18365,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $remote_only" >&5 $as_echo "$remote_only" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable debug support" >&5 -$as_echo_n "checking whether to enable debug support... " >&6; } -# Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : - enableval=$enable_debug; -fi - -if test x$enable_debug = xyes; then - CPPFLAGS="${CPPFLAGS} -DDEBUG" -else - CPPFLAGS="${CPPFLAGS} -DNDEBUG" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug" >&5 -$as_echo "$enable_debug" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable C++ exception support" >&5 -$as_echo_n "checking whether to enable C++ exception support... " >&6; } -# Check whether --enable-cxx_exceptions was given. -if test "${enable_cxx_exceptions+set}" = set; then : - enableval=$enable_cxx_exceptions; -else - -# C++ exception handling doesn't work too well on x86 -case $target_arch in - x86*) enable_cxx_exceptions=no;; - aarch64*) enable_cxx_exceptions=no;; - arm*) enable_cxx_exceptions=no;; - mips*) enable_cxx_exceptions=no;; - tile*) enable_cxx_exceptions=no;; - s390x*) enable_cxx_exceptions=no;; - loongarch*) enable_cxx_exceptions=no;; - *) enable_cxx_exceptions=yes;; -esac - -fi - - - if test x$enable_cxx_exceptions = xyes; then - SUPPORT_CXX_EXCEPTIONS_TRUE= - SUPPORT_CXX_EXCEPTIONS_FALSE='#' -else - SUPPORT_CXX_EXCEPTIONS_TRUE='#' - SUPPORT_CXX_EXCEPTIONS_FALSE= -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_cxx_exceptions" >&5 -$as_echo "$enable_cxx_exceptions" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to load .debug_frame sections" >&5 $as_echo_n "checking whether to load .debug_frame sections... " >&6; } # Check whether --enable-debug_frame was given. @@ -18248,23 +18589,6 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to support UNW_CACHE_PER_THREAD" >&5 -$as_echo_n "checking whether to support UNW_CACHE_PER_THREAD... " >&6; } -# Check whether --enable-per-thread-cache was given. -if test "${enable_per_thread_cache+set}" = set; then : - enableval=$enable_per_thread_cache; -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_per_thread_cache" >&5 -$as_echo "$enable_per_thread_cache" >&6; } -if test x$enable_per_thread_cache = xyes; then : - - -$as_echo "#define HAVE___CACHE_PER_THREAD 1" >>confdefs.h - - -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Intel compiler" >&5 $as_echo_n "checking for Intel compiler... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -18352,10 +18676,39 @@ LDFLAGS_NOSTARTFILES="-XCClinker -nostartfiles" fi -if test x$GCC = xyes -a x$intel_compiler != xyes -a x$qcc_compiler != xyes -a x$android != xyes; then - LIBCRTS="-lgcc_s" +OLD_CFLAGS="${CFLAGS}" +CFLAGS="${CFLAGS} -march=armv8-a+sve" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports -march=armv8-a+sve" >&5 +$as_echo_n "checking if compiler supports -march=armv8-a+sve... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + supports_march_armv8_a_sve=yes +else + supports_march_armv8_a_sve=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test x$supports_march_armv8_a_sve = xyes; then + COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_TRUE= + COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_FALSE='#' +else + COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_TRUE='#' + COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_FALSE= fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports_march_armv8_a_sve" >&5 +$as_echo "$supports_march_armv8_a_sve" >&6; } +CFLAGS="${OLD_CFLAGS}" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __builtin___clear_cache" >&5 $as_echo_n "checking for __builtin___clear_cache... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -18418,83 +18771,11 @@ ARCH=`echo $target_arch | tr a-z A-Z` PKG_MAJOR=1 -PKG_MINOR=7 -PKG_EXTRA=2 -PKG_MAINTAINER=libunwind-devel@nongnu.org - -old_LIBS="$LIBS" -LIBS="" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 -$as_echo_n "checking for library containing backtrace... " >&6; } -if ${ac_cv_search_backtrace+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char backtrace (); -int -main () -{ -return backtrace (); - ; - return 0; -} -_ACEOF -for ac_lib in '' execinfo; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_backtrace=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_backtrace+:} false; then : - break -fi -done -if ${ac_cv_search_backtrace+:} false; then : - -else - ac_cv_search_backtrace=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 -$as_echo "$ac_cv_search_backtrace" >&6; } -ac_res=$ac_cv_search_backtrace -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +PKG_MINOR=8 +PKG_EXTRA=1 +PKG_MAINTAINER=https://github.com/libunwind/libunwind -fi -LIBS="$old_LIBS" -case "$ac_cv_search_backtrace" in - -l*) BACKTRACELIB=$ac_cv_search_backtrace;; - *) BACKTRACELIB="";; -esac - - -# Check whether --with-testdriver was given. -if test "${with_testdriver+set}" = set; then : - withval=$with_testdriver; -else - with_testdriver=\$\(top_srcdir\)/config/test-driver -fi - -UNW_TESTDRIVER=$with_testdriver @@ -18509,98 +18790,6 @@ - - - - -# Extract the first word of "latex2man", so it can be a program name with args. -set dummy latex2man; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LATEX2MAN+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $LATEX2MAN in - [\\/]* | ?:[\\/]*) - ac_cv_path_LATEX2MAN="$LATEX2MAN" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_LATEX2MAN="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -LATEX2MAN=$ac_cv_path_LATEX2MAN -if test -n "$LATEX2MAN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEX2MAN" >&5 -$as_echo "$LATEX2MAN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test "x$LATEX2MAN" = "x" && test "x$enable_documentation" = "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: latex2man not found. Install latex2man. Disabling docs." >&5 -$as_echo "$as_me: WARNING: latex2man not found. Install latex2man. Disabling docs." >&2;} - enable_documentation="no"; -fi - - if test x$enable_documentation = xyes; then - CONFIG_DOCS_TRUE= - CONFIG_DOCS_FALSE='#' -else - CONFIG_DOCS_TRUE='#' - CONFIG_DOCS_FALSE= -fi - -if test "x$enable_documentation" = "xyes"; then - ac_config_files="$ac_config_files doc/Makefile doc/common.tex" - -fi - - if test x$enable_tests = xyes; then - CONFIG_TESTS_TRUE= - CONFIG_TESTS_FALSE='#' -else - CONFIG_TESTS_TRUE='#' - CONFIG_TESTS_FALSE= -fi - -if test "x$enable_tests" = "xyes"; then - ac_config_files="$ac_config_files tests/Makefile tests/check-namespace.sh" - -fi - - if test "x$enable_weak_backtrace" = xyes; then - CONFIG_WEAK_BACKTRACE_TRUE= - CONFIG_WEAK_BACKTRACE_FALSE='#' -else - CONFIG_WEAK_BACKTRACE_TRUE='#' - CONFIG_WEAK_BACKTRACE_FALSE= -fi - -if test -z "$CONFIG_WEAK_BACKTRACE_TRUE"; then : - - -$as_echo "#define CONFIG_WEAK_BACKTRACE 1" >>confdefs.h - - -fi - ac_config_files="$ac_config_files Makefile src/Makefile include/libunwind-common.h include/libunwind.h include/tdep/libunwind_i.h" ac_config_files="$ac_config_files src/unwind/libunwind.pc src/coredump/libunwind-coredump.pc src/ptrace/libunwind-ptrace.pc src/setjmp/libunwind-setjmp.pc src/libunwind-generic.pc" @@ -18762,16 +18951,44 @@ as_fn_error $? "conditional \"BUILD_PTRACE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${BUILD_NTO_TRUE}" && test -z "${BUILD_NTO_FALSE}"; then + as_fn_error $? "conditional \"BUILD_NTO\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${BUILD_SETJMP_TRUE}" && test -z "${BUILD_SETJMP_FALSE}"; then as_fn_error $? "conditional \"BUILD_SETJMP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CONFIG_WEAK_BACKTRACE_TRUE}" && test -z "${CONFIG_WEAK_BACKTRACE_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_WEAK_BACKTRACE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${BUILD_UNWIND_HEADER_TRUE}" && test -z "${BUILD_UNWIND_HEADER_FALSE}"; then as_fn_error $? "conditional \"BUILD_UNWIND_HEADER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${NO_PTRACE_TEST_TRUE}" && test -z "${NO_PTRACE_TEST_FALSE}"; then - as_fn_error $? "conditional \"NO_PTRACE_TEST\" was never defined. +if test -z "${CONFIG_TESTS_TRUE}" && test -z "${CONFIG_TESTS_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_TESTS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${SUPPORT_CXX_EXCEPTIONS_TRUE}" && test -z "${SUPPORT_CXX_EXCEPTIONS_FALSE}"; then + as_fn_error $? "conditional \"SUPPORT_CXX_EXCEPTIONS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${CONFIG_DOCS_TRUE}" && test -z "${CONFIG_DOCS_FALSE}"; then + as_fn_error $? "conditional \"CONFIG_DOCS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_UNW_RESUME_TESTS_TRUE}" && test -z "${ENABLE_UNW_RESUME_TESTS_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_UNW_RESUME_TESTS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${XFAIL_PTRACE_TEST_TRUE}" && test -z "${XFAIL_PTRACE_TEST_FALSE}"; then + as_fn_error $? "conditional \"XFAIL_PTRACE_TEST\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${CROSS_BUILD_TRUE}" && test -z "${CROSS_BUILD_FALSE}"; then + as_fn_error $? "conditional \"CROSS_BUILD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${REMOTE_ONLY_TRUE}" && test -z "${REMOTE_ONLY_FALSE}"; then @@ -18818,10 +19035,6 @@ as_fn_error $? "conditional \"ARCH_SH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${ARCH_TILEGX_TRUE}" && test -z "${ARCH_TILEGX_FALSE}"; then - as_fn_error $? "conditional \"ARCH_TILEGX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${ARCH_S390X_TRUE}" && test -z "${ARCH_S390X_FALSE}"; then as_fn_error $? "conditional \"ARCH_S390X\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -18870,10 +19083,6 @@ as_fn_error $? "conditional \"USE_DWARF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${SUPPORT_CXX_EXCEPTIONS_TRUE}" && test -z "${SUPPORT_CXX_EXCEPTIONS_FALSE}"; then - as_fn_error $? "conditional \"SUPPORT_CXX_EXCEPTIONS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${HAVE_LZMA_TRUE}" && test -z "${HAVE_LZMA_FALSE}"; then as_fn_error $? "conditional \"HAVE_LZMA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -18882,16 +19091,8 @@ as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${CONFIG_DOCS_TRUE}" && test -z "${CONFIG_DOCS_FALSE}"; then - as_fn_error $? "conditional \"CONFIG_DOCS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CONFIG_TESTS_TRUE}" && test -z "${CONFIG_TESTS_FALSE}"; then - as_fn_error $? "conditional \"CONFIG_TESTS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CONFIG_WEAK_BACKTRACE_TRUE}" && test -z "${CONFIG_WEAK_BACKTRACE_FALSE}"; then - as_fn_error $? "conditional \"CONFIG_WEAK_BACKTRACE\" was never defined. +if test -z "${COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_TRUE}" && test -z "${COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_FALSE}"; then + as_fn_error $? "conditional \"COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi @@ -19291,7 +19492,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libunwind $as_me 1.7.2, which was +This file was extended by libunwind $as_me 1.8.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19351,13 +19552,13 @@ Configuration commands: $config_commands -Report bugs to ." +Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libunwind config.status 1.7.2 +libunwind config.status 1.8.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -19476,7 +19677,7 @@ # # INIT-COMMANDS # -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout @@ -19870,10 +20071,10 @@ "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "doc/common.tex") CONFIG_FILES="$CONFIG_FILES doc/common.tex" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/check-namespace.sh") CONFIG_FILES="$CONFIG_FILES tests/check-namespace.sh" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "doc/common.tex") CONFIG_FILES="$CONFIG_FILES doc/common.tex" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "include/libunwind-common.h") CONFIG_FILES="$CONFIG_FILES include/libunwind-common.h" ;; @@ -20483,29 +20684,35 @@ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac shift - for mf + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf do # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -20523,53 +20730,48 @@ q } s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } - /^X\(\/\/\)$/{ + /^X\/\(\/\/\)$/{ s//\1/ q } - /^X\(\/\).*/{ + /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk } ;; "libtool":C) @@ -20587,7 +20789,6 @@ cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. @@ -21282,6 +21483,7 @@ _LT_EOF ;; + "tests/check-namespace.sh":F) chmod +x tests/check-namespace.sh ;; esac done # for ac_tag diff -Nru libunwind-1.7.2/configure.ac libunwind-1.8.1/configure.ac --- libunwind-1.7.2/configure.ac 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/configure.ac 2024-02-21 13:40:20.000000000 +0000 @@ -1,11 +1,35 @@ -dnl Process this file with autoconf to produce a configure script. +# +# configure.ac +# +# Process this file with autoconf to produce a configure script. +AC_COPYRIGHT([ + This file is part of libunwind. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +]) + define(pkg_major, 1) -define(pkg_minor, 7) -define(pkg_extra, 2) -define(pkg_maintainer, libunwind-devel@nongnu.org) +define(pkg_minor, 8) +define(pkg_extra, 1) +define(pkg_maintainer, https://github.com/libunwind/libunwind) define(mkvers, $1.$2.$3) - AC_INIT([libunwind],[mkvers(pkg_major, pkg_minor, pkg_extra)],[pkg_maintainer]) AC_CONFIG_SRCDIR(src/mi/backtrace.c) AC_CONFIG_AUX_DIR(config) @@ -26,31 +50,22 @@ AM_PROG_AS AM_PROG_CC_C_O -dnl Checks for libraries. -AC_CHECK_LIB(uca, __uc_get_grs) -OLD_LIBS=${LIBS} -AC_SEARCH_LIBS(dlopen, dl) -LIBS=${OLD_LIBS} -case "$ac_cv_search_dlopen" in - -l*) DLLIB=$ac_cv_search_dlopen;; - *) DLLIB="";; -esac +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +AC_TYPE_SIZE_T +AC_CHECK_SIZEOF(off_t) dnl Checks for header files. -AC_HEADER_STDC +AC_MSG_NOTICE([--- Checking for header files ---]) AC_CHECK_HEADERS(asm/ptrace_offsets.h asm/ptrace.h asm/vsyscall.h endian.h sys/endian.h \ sys/param.h execinfo.h ia64intrin.h sys/uc_access.h unistd.h signal.h \ sys/types.h sys/procfs.h sys/ptrace.h sys/syscall.h byteswap.h elf.h \ sys/elf.h link.h sys/link.h) -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_C_INLINE -AC_TYPE_SIZE_T -AC_CHECK_SIZEOF(off_t) - CPPFLAGS="${CPPFLAGS} -D_GNU_SOURCE" +AC_MSG_NOTICE([--- Checking for available types ---]) AC_CHECK_MEMBERS([struct dl_phdr_info.dlpi_subs],,,[#include ]) AC_CHECK_TYPES([struct elf_prstatus, struct prstatus, procfs_status, elf_fpregset_t], [], [], [$ac_includes_default @@ -59,21 +74,24 @@ #endif ]) -AC_CHECK_DECLS([PTRACE_POKEUSER, PTRACE_POKEDATA, PTRACE_SETREGSET, -PTRACE_TRACEME, PTRACE_CONT, PTRACE_SINGLESTEP, -PTRACE_SYSCALL, PT_IO, PT_GETREGS, -PT_GETFPREGS, PT_CONTINUE, PT_TRACE_ME, -PT_STEP, PT_SYSCALL], [], [], -[$ac_includes_default -#if HAVE_SYS_TYPES_H -#include -#endif -#include -]) +dnl Checks for libraries. +AC_MSG_NOTICE([--- Checking for libraries ---]) +save_LDFLAGS="$LDFLAGS" +save_LIBS="$LIBS" +LDFLAGS="${LDFLAGS} -nostdlib" +AC_SEARCH_LIBS([_Unwind_Resume], [gcc_s gcc], + [AS_IF([test "$ac_cv_search__Unwind_Resume" != "none required"], + [AC_SUBST([LIBCRTS], ["$ac_cv_search__Unwind_Resume"])])], + [], + [-lc] +) +LIBS="$save_LIBS" +LDFLAGS="$save_LDFLAGS" +AC_SEARCH_LIBS([__uc_get_grs], [uca]) dnl Checks for library functions. AC_CHECK_FUNCS(dl_iterate_phdr dl_phdr_removals_counter dlmodinfo getunwind \ - ttrace mincore pipe2 sigaltstack) + ttrace mincore pipe2 sigaltstack execvpe) AC_MSG_CHECKING([if building with AltiVec]) AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ @@ -100,7 +118,6 @@ [powerpc*],[$2=ppc$ppc_bits], [sh*],[$2=sh], [amd64],[$2=x86_64], - [tile*],[$2=tilegx], [riscv*],[$2=riscv], [loongarch64*],[$2=loongarch64], [$2=$1]) @@ -110,61 +127,213 @@ SET_ARCH([$host_cpu],[host_arch]) SET_ARCH([$target_cpu],[target_arch]) -# Check for Android -AC_MSG_CHECKING([for Android]) -android="no" -case "$host_os" in - *android*) - android="yes" - AC_MSG_RESULT([yes]) - ;; - *) - AC_MSG_RESULT([no]) - ;; -esac - -AC_ARG_ENABLE(coredump, - AS_HELP_STRING([--enable-coredump],[building libunwind-coredump library]),, - [AS_CASE([$host_arch], [aarch64*|arm*|mips*|sh*|x86*|tile*|riscv*|loongarch64], [enable_coredump=yes], [enable_coredump=no])] +AC_MSG_CHECKING([if libunwind-coredump should be built]) +AC_ARG_ENABLE([coredump], + [AS_HELP_STRING([--enable-coredump], + [build libunwind-coredump library + @<:@default=autodetect@:>@])], + [], + [enable_coredump="check"] +) +AS_IF([test "$enable_coredump" = "check"], + [AS_CASE([$host_arch], + [aarch64*|arm*|mips*|sh*|x86*|riscv*|loongarch64], [enable_coredump=yes], + [enable_coredump=no])] ) - -AC_MSG_CHECKING([if we should build libunwind-coredump]) AC_MSG_RESULT([$enable_coredump]) +AM_CONDITIONAL(BUILD_COREDUMP, test x$enable_coredump = xyes) -AC_ARG_ENABLE(ptrace, - AS_HELP_STRING([--enable-ptrace],[building libunwind-ptrace library]),, - [AC_CHECK_HEADER([sys/ptrace.h], [enable_ptrace=yes], [enable_ptrace=no])] +AC_MSG_CHECKING([if libunwind-ptrace should be built]) +AC_ARG_ENABLE([ptrace], + [AS_HELP_STRING([--enable-ptrace], + [build libunwind-ptrace library + @<:@default=autodetect@:>@])], + [], + [enable_ptrace="check"] +) +AS_IF([test "$enable_ptrace" != "no"], + [AS_IF([test "$ac_cv_header_sys_ptrace_h" = "yes"], [enable_ptrace=yes], + [test "$enable_ptrace" != "check"], [AC_MSG_FAILURE([--enable-ptrace given but + ptrace not supported on target])], + [enable_ptrace="no"] + )] ) - -AC_MSG_CHECKING([if we should build libunwind-ptrace]) AC_MSG_RESULT([$enable_ptrace]) +AM_CONDITIONAL([BUILD_PTRACE], [test x$enable_ptrace = xyes]) +AM_COND_IF([BUILD_PTRACE], [ + AC_MSG_NOTICE([--- Checking for ptrace symbols ---]) + AC_CHECK_DECLS([PTRACE_POKEUSER, PTRACE_POKEDATA, PTRACE_SETREGSET, + PTRACE_TRACEME, PTRACE_CONT, PTRACE_SINGLESTEP, + PTRACE_SYSCALL, PT_IO, PT_GETREGS, + PT_GETFPREGS, PT_CONTINUE, PT_TRACE_ME, + PT_STEP, PT_SYSCALL], + [], + [], + [$ac_includes_default + #if HAVE_SYS_TYPES_H + #include + #endif + #include + ]) +]) -AC_ARG_ENABLE(setjmp, - AS_HELP_STRING([--enable-setjmp],[building libunwind-setjmp library]),, - [AS_IF([test x$target_arch = x$host_arch], [enable_setjmp=yes], [enable_setjmp=no])] +AC_MSG_CHECKING([if libunwind-nto should be built]) +AC_ARG_ENABLE(nto, + [AS_HELP_STRING([--enable-nto], + [build libunwind-nto library + @<:@default=autodetect@:>@])], + [], + [enable_nto="check"] ) +AS_IF([test "$enable_nto" != "no"], + [AC_CHECK_HEADER([sys/neutrino.h], [enable_nto=yes], [enable_nto=no])] +) +AC_MSG_RESULT([$enable_nto]) +AM_CONDITIONAL([BUILD_NTO], [test x$enable_nto = xyes]) -AC_ARG_ENABLE(documentation, - AS_HELP_STRING([--disable-documentation],[Disable generating the man pages]),, - [enable_documentation=yes]) - -AC_ARG_ENABLE(tests, - AS_HELP_STRING([--disable-tests],[Disable tests build]),, - [enable_tests=yes]) +AC_MSG_CHECKING([if libunwind-setjmp should be built]) +AC_ARG_ENABLE([setjmp], + [AS_HELP_STRING([--enable-setjmp], + [build libunwind-setjmp library + @<:@default=autodetect@:>@])], + [], + [enable_setjmp=check] +) +AS_IF([test "$enable_setjmp" = check], + [AS_IF([test x$target_arch = x$host_arch], + [enable_setjmp=yes], + [enable_setjmp=no])] + [AS_IF([expr x$target_os : xnto-qnx >/dev/null], + [enable_setjmp=no])] +) +AC_MSG_RESULT([$enable_setjmp]) +AM_CONDITIONAL(BUILD_SETJMP, test x$enable_setjmp = xyes) -AC_ARG_ENABLE(weak-backtrace, - AS_HELP_STRING([--disable-weak-backtrace],[Do not provide the weak 'backtrace' symbol.]),, - [enable_weak_backtrace=yes]) +AC_MSG_CHECKING([if weak-backtrace is enabled]) +AC_ARG_ENABLE([weak-backtrace], + [AS_HELP_STRING([--disable-weak-backtrace], + [do not provide the weak 'backtrace' symbol + @<:@default=no@:>@])], + [], + [enable_weak_backtrace=yes] +) +AC_MSG_RESULT([$enable_weak_backtrace]) +AM_CONDITIONAL([CONFIG_WEAK_BACKTRACE], [test "x$enable_weak_backtrace" = xyes]) +AM_COND_IF([CONFIG_WEAK_BACKTRACE], [ + AC_DEFINE([CONFIG_WEAK_BACKTRACE], [1], [Define if the weak 'backtrace' symbol is provided.]) +]) -AC_ARG_ENABLE(unwind-header, - AS_HELP_STRING([--disable-unwind-header],[Do not export the 'unwind.h' header]),, - [enable_unwind_header=yes]) -AC_MSG_CHECKING([if we should export unwind.h]) +AC_MSG_CHECKING([if unwind.h should be exported]) +AC_ARG_ENABLE([unwind-header], + [AS_HELP_STRING([--disable-unwind-header], + [do not export the 'unwind.h' header + @<:@default=no@:>@])], + [], + [enable_unwind_header=yes] +) AC_MSG_RESULT([$enable_unwind_header]) +AM_CONDITIONAL(BUILD_UNWIND_HEADER, test "x$enable_unwind_header" = xyes) + +AC_MSG_CHECKING([whether to support UNW_CACHE_PER_THREAD]) +AC_ARG_ENABLE([per-thread-cache], + [AS_HELP_STRING([--enable-per-thread-cache], + [build with support for UNW_CACHE_PER_THREAD + (which imposes a high TLS memory usage) + @<:@default=no@:>@])], + [], + [enable_per_thread_cache=no] +) +AC_MSG_RESULT([$enable_per_thread_cache]) +AS_IF([test x$enable_per_thread_cache = xyes], + [AC_DEFINE([HAVE___CACHE_PER_THREAD], 1, [Define to 1 if --enable-per-thread-cache])] +) + +AC_MSG_CHECKING([if testsuite should be built]) +AC_ARG_ENABLE([tests], + [AS_HELP_STRING([--disable-tests], + [disable building tests @<:@default=no@:>@])], + [], + [enable_tests=yes] +) +AC_MSG_RESULT([$enable_tests]) +AM_CONDITIONAL([CONFIG_TESTS], [test x$enable_tests = xyes]) +AM_COND_IF([CONFIG_TESTS], [ + old_LIBS="$LIBS" + AC_MSG_NOTICE([--- Checking for extra libraries linked to tests ---]) + AC_SEARCH_LIBS([dlopen], [dl], + [AS_IF([test "$ac_cv_search_dlopen" != "none required"], + [AC_SUBST([DLLIB], ["$ac_cv_search_dlopen"])])]) + AC_SEARCH_LIBS([pthread_create], [pthread], + [AS_IF([test "$ac_cv_search_pthread_create" != "none required"], + [AC_SUBST([PTHREADS_LIB],["$ac_cv_search_pthread_create"])])]) + AC_SEARCH_LIBS([backtrace], [execinfo], + [AS_IF([test "$ac_cv_search_backtrace" != "none required"], + [AC_SUBST([BACKTRACELIB],["$ac_cv_search_backtrace"])])]) + LIBS="$old_LIBS" + AC_CONFIG_FILES([tests/Makefile]) + AC_CONFIG_FILES([tests/check-namespace.sh], [chmod +x tests/check-namespace.sh]) +]) +AC_ARG_WITH([testdriver], + [AS_HELP_STRING([--with-testdriver], + [use designated test driver instead of default LOG_DRIVER])], + [], + [with_testdriver=\$\(top_srcdir\)/config/test-driver]) +AC_SUBST([UNW_TESTDRIVER], $with_testdriver) -AC_MSG_CHECKING([if we should build libunwind-setjmp]) -AC_MSG_RESULT([$enable_setjmp]) + +AC_MSG_CHECKING([if debug support should be built]) +AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [enable debug support (slows down execution) + @<:@default=no@:>@])], + [], + [enable_debug=no] +) +AC_MSG_RESULT([$enable_debug]) +AS_IF([test x$enable_debug = xyes], + [CPPFLAGS="${CPPFLAGS} -DDEBUG"], + [CPPFLAGS="${CPPFLAGS} -DNDEBUG"] +) + +AC_MSG_CHECKING([if C++ exception support should be built]) +AC_ARG_ENABLE([cxx_exceptions], + [AS_HELP_STRING([--enable-cxx-exceptions], + [use libunwind to handle C++ exceptions + @<:@default=autodetect@:>@])], + [], + [enable_cxx_exceptions=check] +) +AS_IF([test $enable_cxx_exceptions = check], + [AS_CASE([$target_arch], + [aarch64*|arm*|mips*|x86*|s390x*|loongarch64], [enable_cxx_exceptions=no], + [enable_cxx_exceptions=yes])] +) +AC_MSG_RESULT([$enable_cxx_exceptions]) +AM_CONDITIONAL([SUPPORT_CXX_EXCEPTIONS], [test x$enable_cxx_exceptions = xyes]) + +AC_MSG_CHECKING([if documentation should be built]) +AC_ARG_ENABLE([documentation], + [AS_HELP_STRING([--enable-documentation], + [enable generating the man pages @<:@default=yes@:>@])], + [], + [enable_documentation=yes]) +AC_MSG_RESULT([$enable_documentation]) +AC_PATH_PROG([LATEX2MAN],[latex2man]) +AS_IF([test "x$LATEX2MAN" = "x" && test "x$enable_documentation" != "xno"], [ + AC_MSG_WARN([latex2man not found. Install latex2man. Disabling docs.]) + enable_documentation="no"; +]) +AM_CONDITIONAL([CONFIG_DOCS], [test x$enable_documentation != xno]) +AM_COND_IF([CONFIG_DOCS], [AC_CONFIG_FILES([doc/Makefile doc/common.tex])]) + +# Enable tests built around unw_resume, which is not supported on all targets +AC_MSG_CHECKING([if we should enable unw_resume tests]) +AS_CASE([$target_os], + [nto-qnx*], [enable_unw_resume_tests=no], + [enable_unw_resume_tests=yes]) +AC_MSG_RESULT([$enable_unw_resume_tests]) +AM_CONDITIONAL([ENABLE_UNW_RESUME_TESTS], [test x$enable_unw_resume_tests = xyes]) AC_MSG_CHECKING([for build architecture]) AC_MSG_RESULT([$build_arch]) @@ -175,11 +344,8 @@ AC_MSG_CHECKING([for target operating system]) AC_MSG_RESULT([$target_os]) -AM_CONDITIONAL(BUILD_COREDUMP, test x$enable_coredump = xyes) -AM_CONDITIONAL(BUILD_PTRACE, test x$enable_ptrace = xyes) -AM_CONDITIONAL(BUILD_SETJMP, test x$enable_setjmp = xyes) -AM_CONDITIONAL(BUILD_UNWIND_HEADER, test "x$enable_unwind_header" = xyes) -AM_CONDITIONAL(NO_PTRACE_TEST, test x$build_arch != x$host_arch) +AM_CONDITIONAL([XFAIL_PTRACE_TEST], [echo $CFLAGS | grep -q '\-m32\>']) +AM_CONDITIONAL([CROSS_BUILD], [test x$build_arch != x$host_arch]) AM_CONDITIONAL(REMOTE_ONLY, test x$target_arch != x$host_arch) AM_CONDITIONAL(ARCH_AARCH64, test x$target_arch = xaarch64) AM_CONDITIONAL(ARCH_ARM, test x$target_arch = xarm) @@ -191,7 +357,6 @@ AM_CONDITIONAL(ARCH_PPC32, test x$target_arch = xppc32) AM_CONDITIONAL(ARCH_PPC64, test x$target_arch = xppc64) AM_CONDITIONAL(ARCH_SH, test x$target_arch = xsh) -AM_CONDITIONAL(ARCH_TILEGX, test x$target_arch = xtilegx) AM_CONDITIONAL(ARCH_S390X, test x$target_arch = xs390x) AM_CONDITIONAL(ARCH_RISCV, test x$target_arch = xriscv) AM_CONDITIONAL(ARCH_LOONGARCH64, test x$target_arch = xloongarch64) @@ -202,12 +367,12 @@ AM_CONDITIONAL(OS_SOLARIS, expr x$target_os : xsolaris >/dev/null) AC_MSG_CHECKING([for ELF helper width]) -case "${target_arch}" in -(arm|hppa|ppc32|x86|sh) use_elf32=yes; AC_MSG_RESULT([32]);; -(aarch64|ia64|ppc64|x86_64|s390x|tilegx) use_elf64=yes; AC_MSG_RESULT([64]);; -(mips|riscv|loongarch64) use_elfxx=yes; AC_MSG_RESULT([xx]);; -*) AC_MSG_ERROR([Unknown ELF target: ${target_arch}]) -esac +AS_CASE([${target_arch}], + [arm|hppa|ppc32|x86|sh], [use_elf32=yes; AC_MSG_RESULT([32])], + [aarch64|ia64|ppc64|x86_64|s390x], [use_elf64=yes; AC_MSG_RESULT([64])], + [mips|riscv|loongarch64], [use_elfxx=yes; AC_MSG_RESULT([xx])], + [AC_MSG_ERROR([Unknown ELF target: ${target_arch}])] +) AM_CONDITIONAL(USE_ELF32, [test x$use_elf32 = xyes]) AM_CONDITIONAL(USE_ELF64, [test x$use_elf64 = xyes]) AM_CONDITIONAL(USE_ELFXX, [test x$use_elfxx = xyes]) @@ -230,36 +395,6 @@ fi AC_MSG_RESULT([$remote_only]) -AC_MSG_CHECKING([whether to enable debug support]) -AC_ARG_ENABLE(debug, -AS_HELP_STRING([--enable-debug],[turn on debug support (slows down execution)])) -if test x$enable_debug = xyes; then - CPPFLAGS="${CPPFLAGS} -DDEBUG" -else - CPPFLAGS="${CPPFLAGS} -DNDEBUG" -fi -AC_MSG_RESULT([$enable_debug]) - -AC_MSG_CHECKING([whether to enable C++ exception support]) -AC_ARG_ENABLE(cxx_exceptions, -AS_HELP_STRING([--enable-cxx-exceptions],[use libunwind to handle C++ exceptions]),, -[ -# C++ exception handling doesn't work too well on x86 -case $target_arch in - x86*) enable_cxx_exceptions=no;; - aarch64*) enable_cxx_exceptions=no;; - arm*) enable_cxx_exceptions=no;; - mips*) enable_cxx_exceptions=no;; - tile*) enable_cxx_exceptions=no;; - s390x*) enable_cxx_exceptions=no;; - loongarch*) enable_cxx_exceptions=no;; - *) enable_cxx_exceptions=yes;; -esac -]) - -AM_CONDITIONAL([SUPPORT_CXX_EXCEPTIONS], [test x$enable_cxx_exceptions = xyes]) -AC_MSG_RESULT([$enable_cxx_exceptions]) - AC_MSG_CHECKING([whether to load .debug_frame sections]) AC_ARG_ENABLE(debug_frame, AS_HELP_STRING([--enable-debug-frame],[Load the ".debug_frame" section if available]),, [ @@ -337,15 +472,6 @@ AC_SUBST([LIBZ]) AM_CONDITIONAL(HAVE_ZLIB, test x$enable_zlibdebuginfo = xyes) -AC_MSG_CHECKING([whether to support UNW_CACHE_PER_THREAD]) -AC_ARG_ENABLE([per-thread-cache], -AS_HELP_STRING([--enable-per-thread-cache], [build with support for UNW_CACHE_PER_THREAD (which imposes a high TLS memory usage) (default: disabled)])) -AC_MSG_RESULT([$enable_per_thread_cache]) -AS_IF([test x$enable_per_thread_cache = xyes], [ - AC_DEFINE(HAVE___CACHE_PER_THREAD, 1, - [Define to 1 if --enable-per-thread-cache]) -]) - AC_MSG_CHECKING([for Intel compiler]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#ifndef __INTEL_COMPILER #error choke me @@ -386,9 +512,13 @@ LDFLAGS_NOSTARTFILES="-XCClinker -nostartfiles" fi -if test x$GCC = xyes -a x$intel_compiler != xyes -a x$qcc_compiler != xyes -a x$android != xyes; then - LIBCRTS="-lgcc_s" -fi +OLD_CFLAGS="${CFLAGS}" +CFLAGS="${CFLAGS} -march=armv8-a+sve" +AC_MSG_CHECKING([if compiler supports -march=armv8-a+sve]) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [supports_march_armv8_a_sve=yes],[supports_march_armv8_a_sve=no]) +AM_CONDITIONAL(COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE, [test x$supports_march_armv8_a_sve = xyes]) +AC_MSG_RESULT([$supports_march_armv8_a_sve]) +CFLAGS="${OLD_CFLAGS}" AC_MSG_CHECKING([for __builtin___clear_cache]) AC_LINK_IFELSE( @@ -423,21 +553,6 @@ PKG_EXTRA=pkg_extra PKG_MAINTAINER=pkg_maintainer -old_LIBS="$LIBS" -LIBS="" -AC_SEARCH_LIBS(backtrace, execinfo) -LIBS="$old_LIBS" -case "$ac_cv_search_backtrace" in - -l*) BACKTRACELIB=$ac_cv_search_backtrace;; - *) BACKTRACELIB="";; -esac - -AC_ARG_WITH([testdriver], - [AS_HELP_STRING([--with-testdriver], - [use designated test driver instead of default LOG_DRIVER])], - [], - [with_testdriver=\$\(top_srcdir\)/config/test-driver]) -AC_SUBST([UNW_TESTDRIVER], $with_testdriver) AC_SUBST(build_arch) AC_SUBST(target_os) @@ -445,36 +560,13 @@ AC_SUBST(ARCH) AC_SUBST(LDFLAGS_STATIC_LIBCXA) AC_SUBST(LDFLAGS_NOSTARTFILES) -AC_SUBST(LIBCRTS) AC_SUBST(PKG_MAJOR) AC_SUBST(PKG_MINOR) AC_SUBST(PKG_EXTRA) AC_SUBST(PKG_MAINTAINER) AC_SUBST(enable_cxx_exceptions) AC_SUBST(enable_debug_frame) -AC_SUBST(DLLIB) -AC_SUBST(BACKTRACELIB) -AC_PATH_PROG([LATEX2MAN],[latex2man]) -if test "x$LATEX2MAN" = "x" && test "x$enable_documentation" = "xyes"; then - AC_MSG_WARN([latex2man not found. Install latex2man. Disabling docs.]) - enable_documentation="no"; -fi - -AM_CONDITIONAL([CONFIG_DOCS], [test x$enable_documentation = xyes]) -if test "x$enable_documentation" = "xyes"; then - AC_CONFIG_FILES(doc/Makefile doc/common.tex) -fi - -AM_CONDITIONAL([CONFIG_TESTS], [test x$enable_tests = xyes]) -if test "x$enable_tests" = "xyes"; then - AC_CONFIG_FILES(tests/Makefile tests/check-namespace.sh) -fi - -AM_CONDITIONAL([CONFIG_WEAK_BACKTRACE], [test "x$enable_weak_backtrace" = xyes]) -AM_COND_IF([CONFIG_WEAK_BACKTRACE], [ - AC_DEFINE([CONFIG_WEAK_BACKTRACE], [1], [Define if the weak 'backtrace' symbol is provided.]) -]) AC_CONFIG_FILES(Makefile src/Makefile include/libunwind-common.h diff -Nru libunwind-1.7.2/debian/changelog libunwind-1.8.1/debian/changelog --- libunwind-1.7.2/debian/changelog 2024-09-19 04:01:10.000000000 +0000 +++ libunwind-1.8.1/debian/changelog 2024-12-24 16:48:51.000000000 +0000 @@ -1,3 +1,11 @@ +libunwind (1.8.1-0.1) unstable; urgency=medium + + * Non-maintainer upload. + * New upstream version 1.8.1 (Closes: #1082659, #1091302, #1082284) + * Refresh or drop patches + + -- Noah Meyerhans Tue, 24 Dec 2024 11:48:51 -0500 + libunwind (1.7.2-1) unstable; urgency=low * New upstream release. (Closes: #1054285) diff -Nru libunwind-1.7.2/debian/patches/0001-Add-a-step-limit-to-Ltest-init-local-signal.c.patch libunwind-1.8.1/debian/patches/0001-Add-a-step-limit-to-Ltest-init-local-signal.c.patch --- libunwind-1.7.2/debian/patches/0001-Add-a-step-limit-to-Ltest-init-local-signal.c.patch 2024-09-19 03:56:04.000000000 +0000 +++ libunwind-1.8.1/debian/patches/0001-Add-a-step-limit-to-Ltest-init-local-signal.c.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -From deb9d87335d5366001e5fe1642698fbfbb399c55 Mon Sep 17 00:00:00 2001 -From: Stephen Webb -Date: Fri, 26 May 2023 14:26:16 -0400 -Subject: Add a step limit to Ltest-init-local-signal.c - -This test seemed to be hanging on an infinite loop on arm targets. - -Adding a limit on the number of times the `stepper()` function loops -should fix that. 10 seems like a resonable limit since the expected -number of steps is between 2 and 6 for most targets. ---- - tests/Ltest-init-local-signal.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/tests/Ltest-init-local-signal.c b/tests/Ltest-init-local-signal.c -index 4bde218f..6365313c 100644 ---- a/tests/Ltest-init-local-signal.c -+++ b/tests/Ltest-init-local-signal.c -@@ -9,6 +9,8 @@ - #include - #include - -+static const int max_steps = 10; -+ - int stepper(unw_cursor_t* c) { - int steps = 0; - int ret = 1; -@@ -19,6 +21,7 @@ int stepper(unw_cursor_t* c) { - break; - } - steps++; -+ if (steps > max_steps) break; - } - return steps; - } --- -2.30.2 - diff -Nru libunwind-1.7.2/debian/patches/0001-Fix-FTBFS-on-Linux-ppc32.patch libunwind-1.8.1/debian/patches/0001-Fix-FTBFS-on-Linux-ppc32.patch --- libunwind-1.7.2/debian/patches/0001-Fix-FTBFS-on-Linux-ppc32.patch 2024-09-19 03:56:04.000000000 +0000 +++ libunwind-1.8.1/debian/patches/0001-Fix-FTBFS-on-Linux-ppc32.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -From 122b8847cd532ecda5dc837e1cdc1f5095bbb994 Mon Sep 17 00:00:00 2001 -From: Stephen Webb -Date: Fri, 26 May 2023 16:22:08 -0400 -Subject: Fix FTBFS on Linux ppc32 - -Looks like the Linux ucontext structure has changed for PPC at some -point. This probably needs some kind of version check, or else ancient -kernels will need to stick with 1.6 or earlier. ---- - src/ppc32/ucontext_i.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/ppc32/ucontext_i.h b/src/ppc32/ucontext_i.h -index 64f8ed87..ee93c697 100644 ---- a/src/ppc32/ucontext_i.h -+++ b/src/ppc32/ucontext_i.h -@@ -44,8 +44,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - //#define MQ_IDX 36 - #define LINK_IDX 36 - --#define _UC_MCONTEXT_GPR(x) ( (void *)&dmy_ctxt.uc_mcontext.gregs[x] - (void *)&dmy_ctxt) ) --#define _UC_MCONTEXT_FPR(x) ( ((void *)&dmy_ctxt.uc_mcontext.fpregs[x] - (void *)&dmy_ctxt) ) -+#define _UC_MCONTEXT_GPR(x) ( ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[x] - (void *)&dmy_ctxt) ) -+#define _UC_MCONTEXT_FPR(x) ( ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[x] - (void *)&dmy_ctxt) ) - - /* These are dummy structures used only for obtaining the offsets of the - various structure members. */ --- -2.30.2 - diff -Nru libunwind-1.7.2/debian/patches/0001-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch libunwind-1.8.1/debian/patches/0001-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch --- libunwind-1.7.2/debian/patches/0001-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch 2024-09-19 03:56:04.000000000 +0000 +++ libunwind-1.8.1/debian/patches/0001-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch 2024-12-24 13:20:23.000000000 +0000 @@ -7,19 +7,16 @@ include/libunwind-arm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/include/libunwind-arm.h b/include/libunwind-arm.h -index 4ac1fd38..7c9194d7 100644 ---- a/include/libunwind-arm.h -+++ b/include/libunwind-arm.h -@@ -285,7 +285,7 @@ unw_tdep_context_t; - "mov r0, #0\n" \ - "stmia %[base]!, {r0-r15}\n" \ +Index: libunwind/include/libunwind-arm.h +=================================================================== +--- libunwind.orig/include/libunwind-arm.h ++++ libunwind/include/libunwind-arm.h +@@ -288,7 +288,7 @@ unw_tdep_context_t; + "mov r0, #0\n\t" \ + "stmia %[base]!, {r0-r15}\n\t" \ VSTMIA \ - : [r0] "=r" (r0) : [base] "r" (unw_base) : "memory"); \ + : [r0] "=r" (r0), [base] "+r" (unw_base) : : "memory"); \ (int)r0; }) #else /* __thumb__ */ - #define unw_tdep_getcontext(uc) ({ \ --- -2.30.2 - + #define unw_tdep_getcontext(uc) ({ \ diff -Nru libunwind-1.7.2/debian/patches/series libunwind-1.8.1/debian/patches/series --- libunwind-1.7.2/debian/patches/series 2024-09-19 03:54:34.000000000 +0000 +++ libunwind-1.8.1/debian/patches/series 2024-12-24 13:16:21.000000000 +0000 @@ -1,3 +1 @@ -0001-Fix-FTBFS-on-Linux-ppc32.patch -0001-Add-a-step-limit-to-Ltest-init-local-signal.c.patch 0001-Fixed-miscompilation-of-unw_getcontext-on-ARM.patch diff -Nru libunwind-1.7.2/doc/Makefile.am libunwind-1.8.1/doc/Makefile.am --- libunwind-1.7.2/doc/Makefile.am 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/doc/Makefile.am 2024-02-20 19:54:51.000000000 +0000 @@ -1,6 +1,9 @@ # man pages that go into section 3: man3_MANS = libunwind.man libunwind-dynamic.man libunwind-ia64.man \ - libunwind-ptrace.man libunwind-setjmp.man \ + libunwind-coredump.man \ + libunwind-ptrace.man \ + libunwind-setjmp.man \ + libunwind-nto.man \ unw_apply_reg_state.man \ unw_backtrace.man \ unw_flush_cache.man \ @@ -22,17 +25,23 @@ unw_regname.man unw_resume.man \ unw_reg_states_iterate.man \ unw_set_caching_policy.man \ + unw_set_iterate_phdr_function.man \ unw_set_cache_size.man \ unw_set_fpreg.man \ unw_set_reg.man \ unw_step.man \ unw_strerror.man \ _U_dyn_register.man \ - _U_dyn_cancel.man + _U_dyn_cancel.man \ + unw_get_elf_filename.man \ + unw_get_elf_filename_by_ip.man EXTRA_DIST = NOTES libunwind.trans \ libunwind.tex libunwind-dynamic.tex libunwind-ia64.tex \ - libunwind-ptrace.tex libunwind-setjmp.tex \ + libunwind-coredump.tex \ + libunwind-ptrace.tex \ + libunwind-setjmp.tex \ + libunwind-nto.tex \ unw_apply_reg_state.tex \ unw_backtrace.tex \ unw_flush_cache.tex \ @@ -50,6 +59,7 @@ unw_is_signal_frame.tex \ unw_create_addr_space.tex unw_destroy_addr_space.tex \ unw_regname.tex unw_resume.tex unw_set_caching_policy.tex \ + unw_set_iterate_phdr_function.tex \ unw_reg_states_iterate.tex \ unw_set_cache_size.tex \ unw_set_fpreg.tex \ @@ -58,6 +68,8 @@ unw_strerror.tex \ _U_dyn_register.tex \ _U_dyn_cancel.tex \ + unw_get_elf_filename.tex \ + unw_get_elf_filename_by_ip.tex \ $(man3_MANS) L2M = latex2man diff -Nru libunwind-1.7.2/doc/Makefile.in libunwind-1.8.1/doc/Makefile.in --- libunwind-1.7.2/doc/Makefile.in 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/doc/Makefile.in 2024-02-22 14:09:14.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -232,6 +232,7 @@ PKG_MAINTAINER = @PKG_MAINTAINER@ PKG_MAJOR = @PKG_MAJOR@ PKG_MINOR = @PKG_MINOR@ +PTHREADS_LIB = @PTHREADS_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -304,7 +305,10 @@ # man pages that go into section 3: man3_MANS = libunwind.man libunwind-dynamic.man libunwind-ia64.man \ - libunwind-ptrace.man libunwind-setjmp.man \ + libunwind-coredump.man \ + libunwind-ptrace.man \ + libunwind-setjmp.man \ + libunwind-nto.man \ unw_apply_reg_state.man \ unw_backtrace.man \ unw_flush_cache.man \ @@ -326,17 +330,23 @@ unw_regname.man unw_resume.man \ unw_reg_states_iterate.man \ unw_set_caching_policy.man \ + unw_set_iterate_phdr_function.man \ unw_set_cache_size.man \ unw_set_fpreg.man \ unw_set_reg.man \ unw_step.man \ unw_strerror.man \ _U_dyn_register.man \ - _U_dyn_cancel.man + _U_dyn_cancel.man \ + unw_get_elf_filename.man \ + unw_get_elf_filename_by_ip.man EXTRA_DIST = NOTES libunwind.trans \ libunwind.tex libunwind-dynamic.tex libunwind-ia64.tex \ - libunwind-ptrace.tex libunwind-setjmp.tex \ + libunwind-coredump.tex \ + libunwind-ptrace.tex \ + libunwind-setjmp.tex \ + libunwind-nto.tex \ unw_apply_reg_state.tex \ unw_backtrace.tex \ unw_flush_cache.tex \ @@ -354,6 +364,7 @@ unw_is_signal_frame.tex \ unw_create_addr_space.tex unw_destroy_addr_space.tex \ unw_regname.tex unw_resume.tex unw_set_caching_policy.tex \ + unw_set_iterate_phdr_function.tex \ unw_reg_states_iterate.tex \ unw_set_cache_size.tex \ unw_set_fpreg.tex \ @@ -362,6 +373,8 @@ unw_strerror.tex \ _U_dyn_register.tex \ _U_dyn_cancel.tex \ + unw_get_elf_filename.tex \ + unw_get_elf_filename_by_ip.tex \ $(man3_MANS) L2M = latex2man @@ -390,8 +403,8 @@ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -402,8 +415,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): -common.tex: $(top_builddir)/config.status $(srcdir)/common.tex.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +@CONFIG_DOCS_TRUE@common.tex: $(top_builddir)/config.status $(srcdir)/common.tex.in +@CONFIG_DOCS_TRUE@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo @@ -458,7 +471,10 @@ cscope cscopelist: -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ diff -Nru libunwind-1.7.2/doc/_U_dyn_cancel.man libunwind-1.8.1/doc/_U_dyn_cancel.man --- libunwind-1.7.2/doc/_U_dyn_cancel.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/_U_dyn_cancel.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 12:09:49 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "\\_U\\_DYN\\_CANCEL" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "\\_U\\_DYN\\_CANCEL" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME _U_dyn_cancel \-\- cancel unwind\-info for dynamically generated code @@ -30,7 +32,7 @@ .PP The _U_dyn_cancel() routine cancels the registration of the -unwind\-info for a dynamically generated procedure. Argument di +unwind info for a dynamically generated procedure. Argument di is the pointer to the unw_dyn_info_t structure that describes the procedure\&'s unwind\-info. @@ -45,15 +47,15 @@ .PP _U_dyn_cancel() -is thread\-safe but \fInot\fP +is thread safe but \fInot\fP safe to use from a signal handler. .PP .SH SEE ALSO .PP -libunwind\-dynamic(3), -_U_dyn_register(3) +libunwind\-dynamic(3libunwind), +_U_dyn_register(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/_U_dyn_cancel.tex libunwind-1.8.1/doc/_U_dyn_cancel.tex --- libunwind-1.7.2/doc/_U_dyn_cancel.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/_U_dyn_cancel.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{\_U\_dyn\_cancel}{David Mosberger-Tang}{Programming Library}{\_U\_dyn\_cancel}\_U\_dyn\_cancel -- cancel unwind-info for dynamically generated code +\begin{Name}{3libunwind}{\_U\_dyn\_cancel}{David Mosberger-Tang}{Programming Library}{\_U\_dyn\_cancel}\_U\_dyn\_cancel -- cancel unwind-info for dynamically generated code \end{Name} \section{Synopsis} @@ -17,7 +17,7 @@ \section{Description} The \Func{\_U\_dyn\_cancel}() routine cancels the registration of the -unwind-info for a dynamically generated procedure. Argument \Var{di} +unwind info for a dynamically generated procedure. Argument \Var{di} is the pointer to the \Type{unw\_dyn\_info\_t} structure that describes the procedure's unwind-info. @@ -28,12 +28,13 @@ \section{Thread and Signal Safety} -\Func{\_U\_dyn\_cancel}() is thread-safe but \emph{not} safe to use +\Func{\_U\_dyn\_cancel}() is thread safe but \emph{not} safe to use from a signal handler. \section{See Also} -\SeeAlso{libunwind-dynamic(3)}, \SeeAlso{\_U\_dyn\_register(3)} +\SeeAlso{libunwind-dynamic}(3libunwind), +\SeeAlso{\_U\_dyn\_register}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/_U_dyn_register.man libunwind-1.8.1/doc/_U_dyn_register.man --- libunwind-1.7.2/doc/_U_dyn_register.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/_U_dyn_register.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 12:09:49 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,10 +12,10 @@ .fi .. -.TH "\\_U\\_DYN\\_REGISTER" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "\\_U\\_DYN\\_REGISTER" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME _U_dyn_register -\-\- register unwind\-info for dynamically generated code +\-\- register unwind info for dynamically generated code .PP .SH SYNOPSIS @@ -29,11 +31,11 @@ .PP The _U_dyn_register() -routine registers unwind\-info for a -dynamically generated procedure. The procedure\&'s unwind\-info is +routine registers unwind info for a +dynamically generated procedure. The procedure\&'s unwind info is described by a structure of type unw_dyn_info_t (see -libunwind\-dynamic(3)). +libunwind\-dynamic(3libunwind)). A pointer to this structure is passed in argument di\&. .PP @@ -47,15 +49,15 @@ .PP _U_dyn_register() -is thread\-safe but \fInot\fP +is thread safe but \fInot\fP safe to use from a signal handler. .PP .SH SEE ALSO .PP -libunwind\-dynamic(3), -_U_dyn_cancel(3) +libunwind\-dynamic(3libunwind), +_U_dyn_cancel(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/_U_dyn_register.tex libunwind-1.8.1/doc/_U_dyn_register.tex --- libunwind-1.7.2/doc/_U_dyn_register.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/_U_dyn_register.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{\_U\_dyn\_register}{David Mosberger-Tang}{Programming Library}{\_U\_dyn\_register}\_U\_dyn\_register -- register unwind-info for dynamically generated code +\begin{Name}{3libunwind}{\_U\_dyn\_register}{David Mosberger-Tang}{Programming Library}{\_U\_dyn\_register}\_U\_dyn\_register -- register unwind info for dynamically generated code \end{Name} \section{Synopsis} @@ -16,10 +16,10 @@ \section{Description} -The \Func{\_U\_dyn\_register}() routine registers unwind-info for a -dynamically generated procedure. The procedure's unwind-info is +The \Func{\_U\_dyn\_register}() routine registers unwind info for a +dynamically generated procedure. The procedure's unwind info is described by a structure of type \Type{unw\_dyn\_info\_t} (see -\SeeAlso{libunwind-dynamic(3)}). A pointer to this structure is +\SeeAlso{libunwind-dynamic}(3libunwind)). A pointer to this structure is passed in argument \Var{di}. The \Func{\_U\_dyn\_register}() routine is guaranteed to execute in @@ -29,12 +29,13 @@ \section{Thread and Signal Safety} -\Func{\_U\_dyn\_register}() is thread-safe but \emph{not} safe to use +\Func{\_U\_dyn\_register}() is thread safe but \emph{not} safe to use from a signal handler. \section{See Also} -\SeeAlso{libunwind-dynamic(3)}, \SeeAlso{\_U\_dyn\_cancel(3)} +\SeeAlso{libunwind-dynamic}(3libunwind), +\SeeAlso{\_U\_dyn\_cancel}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/libunwind-coredump.man libunwind-1.8.1/doc/libunwind-coredump.man --- libunwind-1.7.2/doc/libunwind-coredump.man 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-coredump.man 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,211 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} +'\" t +.\" Manual page created with latex2man on Tue Aug 29 10:53:41 2023 +.\" NOTE: This file is generated, DO NOT EDIT. +.de Vb +.ft CW +.nf +.. +.de Ve +.ft R + +.fi +.. +.TH "LIBUNWIND\-COREDUMP" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " +.SH NAME +libunwind\-coredump +\-\- coredump() support in libunwind +.PP +.SH SYNOPSIS + +.PP +#include +.br +.PP +unw_accessors_t +_UCD_accessors; +.br +.PP +struct UCD_info *_UCD_create(char const *); +.br +void _UCD_destroy(struct UCD_info *); +.br +.PP +int +_UCD_get_num_threads(struct UCD_info *); +.br +void +_UCD_select_thread(struct UCD_info *, +int); +.br +void +_UCD_get_pid(struct UCD_info *); +.br +void +_UCD_get_cursig(struct UCD_info *); +.br +.PP +int +_UCD_find_proc_info(unw_addr_space_t, +unw_word_t, +unw_proc_info_t *, +int, +void *); +.br +void +_UCD_put_unwind_info(unw_addr_space_t, +unw_proc_info_t *, +void *); +.br +int +_UCD_get_dyn_info_list_addr(unw_addr_space_t, +unw_word_t *, +void *); +.br +int +_UCD_access_mem(unw_addr_space_t, +unw_word_t, +unw_word_t *, +int, +void *); +.br +int +_UCD_access_reg(unw_addr_space_t, +unw_regnum_t, +unw_word_t *, +int, +void *); +.br +int +_UCD_access_fpreg(unw_addr_space_t, +unw_regnum_t, +unw_fpreg_t *, +int, +void *); +.br +int +_UCD_get_proc_name(unw_addr_space_t, +unw_word_t, +char *, +size_t, +unw_word_t *, +void *); +.br +int +_UCD_resume(unw_addr_space_t, +unw_cursor_t *, +void *); +.br +.PP +.SH DESCRIPTION + +.PP +It is possible to generate a snapshot of a process state at a specific moment in +time and save it in a specially\-formatted file called a coredump. +This often happens automatically when a process encounters an unrecoverable +error and the OS itself captures the state of the process when the error +occurred. +libunwind +provides a library that can be used as part of a lightweight +tool to generate some useful information as to why the process abnormally +terminated (such as a stack trace of al threads of execution). +The routines and variables +implementing this facility use a prefix of _UCD, +which +stands for ``unwind\-via\-coredump\&''\&. +.PP +An application that wants to use the coredump remote first needs +to create a new libunwind +address space that represents the +target process. This is done by calling +unw_create_addr_space(). +In many cases, the application +will simply want to pass the address of _UCD_accessors +as the +first argument to this routine. Doing so will ensure that +libunwind +will be able to properly unwind the target process. +However, in special circumstances, an application may prefer to use +only portions of the _UCD\-facility. +For this reason, the +individual callback routines (_UCD_find_proc_info(), +_UCD_put_unwind_info(), +etc.) are also available for direct +use. Of course, the addresses of these routines could also be picked +up from _UCD_accessors, +but doing so would prevent static +initialization. Also, when using _UCD_accessors, +\fIall\fP +the callback routines will be linked into the application, even if +they are never actually called. +.PP +Next, the application needs to load the corefile for analysis and create an +(opaque) UCD_info structure by calling _UCD_create(), +passing the name of the corefile. +The returned opaque pointer then needs to be +passed as the ``argument\&'' pointer (third argument) to +unw_init_remote(). +.PP +When the application is done using libunwind +on the corefile, +_UCD_destroy() +needs to be called, +passing it the pointer that was returned by the corresponding call to +_UCD_create(). +This ensures that all memory and other resources are freed up. +.PP +.TP +_UCD_get_num_threads() + Gets the number of threads in the corefile. +.PP +.TP +_UCD_get_pid() + Gets the process ID of the process associated with the corefile. +.PP +.TP +_UCD_get_cursig() + Gets the current signal begin received by the process associated with the +corefile (if any). +.PP +.TP +_UCD_select_thread() + Selects the current thread for unwinding. +.PP +.SH THREAD SAFETY + +.PP +The coredump remote assumes that a single _UCD_info +structure is never shared between threads. +Because of this, +no explicit locking is used. +As long as only one thread uses a _UCD_info +structure at any given time, +this facility is thread\-safe. +.PP +.SH RETURN VALUE + +.PP +_UCD_create() +may return a null pointer if it fails +to create the UCD_info +for any reason. +.PP +.SH FILES + +.PP +.TP +libunwind\-coredump.h + Header file to include when using the +interface defined by this library. +.TP +\fB\-l\fPunwind\-coredump \fB\-l\fPunwind\-generic + Linker\-switches to add when building a program that uses the +functions defined by this library. +.PP +.SH SEE ALSO + +.PP +libunwind(3libunwind) +.PP +.\" NOTE: This file is generated, DO NOT EDIT. diff -Nru libunwind-1.7.2/doc/libunwind-coredump.tex libunwind-1.8.1/doc/libunwind-coredump.tex --- libunwind-1.7.2/doc/libunwind-coredump.tex 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-coredump.tex 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,138 @@ +\documentclass{article} +\usepackage[fancyhdr,pdf]{latex2man} + +\input{common.tex} + +\begin{document} + +\begin{Name}{3libunwind}{libunwind-coredump}{}{Programming Library}{coredump analysis support in libunwind}libunwind-coredump -- coredump() support in libunwind +\end{Name} + +\section{Synopsis} + +\File{\#include $<$libunwind-coredump.h$>$}\\ + +\noindent +\Type{unw\_accessors\_t} \Var{\_UCD\_accessors};\\ + +\Type{struct~UCD\_info~*}\Func{\_UCD\_create}(\Type{char const~*});\\ +\noindent +\Type{void}~\Func{\_UCD\_destroy}(\Type{struct UCD\_info~*});\\ + +\noindent +\Type{int} \Func{\_UCD\_get\_num\_threads}(\Type{struct UCD\_info~*});\\ +\noindent +\Type{void} \Func{\_UCD\_select\_thread}(\Type{struct UCD\_info~*}, \Type{int});\\ +\noindent +\Type{void} \Func{\_UCD\_get\_pid}(\Type{struct UCD\_info~*});\\ +\noindent +\Type{void} \Func{\_UCD\_get\_cursig}(\Type{struct UCD\_info~*});\\ + +\noindent +\Type{int} \Func{\_UCD\_find\_proc\_info}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{unw\_proc\_info\_t~*}, \Type{int}, \Type{void~*});\\ +\noindent +\Type{void} \Func{\_UCD\_put\_unwind\_info}(\Type{unw\_addr\_space\_t}, \Type{unw\_proc\_info\_t~*}, \Type{void~*});\\ +\noindent +\Type{int} \Func{\_UCD\_get\_dyn\_info\_list\_addr}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t~*}, \Type{void~*});\\ +\noindent +\Type{int} \Func{\_UCD\_access\_mem}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{unw\_word\_t~*}, \Type{int}, \Type{void~*});\\ +\noindent +\Type{int} \Func{\_UCD\_access\_reg}(\Type{unw\_addr\_space\_t}, \Type{unw\_regnum\_t}, \Type{unw\_word\_t~*}, \Type{int}, \Type{void~*});\\ +\noindent +\Type{int} \Func{\_UCD\_access\_fpreg}(\Type{unw\_addr\_space\_t}, \Type{unw\_regnum\_t}, \Type{unw\_fpreg\_t~*}, \Type{int}, \Type{void~*});\\ +\noindent +\Type{int} \Func{\_UCD\_get\_proc\_name}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{char~*}, \Type{size\_t}, \Type{unw\_word\_t~*}, \Type{void~*});\\ +\noindent +\Type{int} \Func{\_UCD\_resume}(\Type{unw\_addr\_space\_t}, \Type{unw\_cursor\_t~*}, \Type{void~*});\\ + +\section{Description} + +It is possible to generate a snapshot of a process state at a specific moment in +time and save it in a specially-formatted file called a coredump. +This often happens automatically when a process encounters an unrecoverable +error and the OS itself captures the state of the process when the error +occurred. +\Prog{libunwind} provides a library that can be used as part of a lightweight +tool to generate some useful information as to why the process abnormally +terminated (such as a stack trace of al threads of execution). +The routines and variables +implementing this facility use a prefix of \Func{\_UCD}, which +stands for ``unwind-via-coredump''. + +An application that wants to use the coredump remote first needs +to create a new \Prog{libunwind} address space that represents the +target process. This is done by calling +\Func{unw\_create\_addr\_space}(). In many cases, the application +will simply want to pass the address of \Var{\_UCD\_accessors} as the +first argument to this routine. Doing so will ensure that +\Prog{libunwind} will be able to properly unwind the target process. +However, in special circumstances, an application may prefer to use +only portions of the \Prog{\_UCD}-facility. For this reason, the +individual callback routines (\Func{\_UCD\_find\_proc\_info}(), +\Func{\_UCD\_put\_unwind\_info}(), etc.) are also available for direct +use. Of course, the addresses of these routines could also be picked +up from \Var{\_UCD\_accessors}, but doing so would prevent static +initialization. Also, when using \Var{\_UCD\_accessors}, \emph{all} +the callback routines will be linked into the application, even if +they are never actually called. + +Next, the application needs to load the corefile for analysis and create an +(opaque) UCD\_info structure by calling \Func{\_UCD_create}(), +passing the name of the corefile. +The returned opaque pointer then needs to be +passed as the ``argument'' pointer (third argument) to +\Func{unw\_init\_remote}(). + +When the application is done using \Prog{libunwind} on the corefile, +\Func{\_UCD\_destroy}() needs to be called, +passing it the pointer that was returned by the corresponding call to +\Func{\_UCD\_create}(). +This ensures that all memory and other resources are freed up. + +\begin{description}[style=nextline] + + \item[\Func{\_UCD\_get\_num\_threads}()] + Gets the number of threads in the corefile. + +\item[\Func{\_UCD\_get\_pid}()] + Gets the process ID of the process associated with the corefile. + +\item[\Func{\_UCD\_get\_cursig}()] + Gets the current signal begin received by the process associated with the + corefile (if any). + +\item[\Func{\_UCD\_select\_thread}()] + Selects the current thread for unwinding. + +\end{description} + +\section{Thread Safety} + +The coredump remote assumes that a single \Prog{\_UCD\_info} +structure is never shared between threads. +Because of this, +no explicit locking is used. +As long as only one thread uses a \Prog{\_UCD\_info} structure at any given time, +this facility is thread-safe. + +\section{Return Value} + +\Func{\_UCD\_create}() may return a null pointer if it fails +to create the \Prog{UCD\_info} for any reason. + +\section{Files} + +\begin{Description} +\item[\File{libunwind-coredump.h}] Header file to include when using the + interface defined by this library. +\item[\Opt{-l}\File{unwind-coredump} \Opt{-l}\File{unwind-generic}] + Linker-switches to add when building a program that uses the + functions defined by this library. +\end{Description} + +\section{See Also} + +\SeeAlso{libunwind}(3libunwind) + +\LatexManEnd +\end{document} diff -Nru libunwind-1.7.2/doc/libunwind-dynamic.man libunwind-1.8.1/doc/libunwind-dynamic.man --- libunwind-1.7.2/doc/libunwind-dynamic.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-dynamic.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Sun Aug 29 23:45:06 CEST 2021 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,479 +12,478 @@ .fi .. -.TH "LIBUNWIND\-DYNAMIC" "3" "29 August 2021" "Programming Library " "Programming Library " +.TH "LIBUNWIND\-DYNAMIC" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME libunwind\-dynamic -\-\- libunwind\-support for runtime\-generated code +\-\- libunwind\-support for runtime\-generated code .PP .SH INTRODUCTION .PP For libunwind -to do its job, it needs to be able to reconstruct +to do its job, it needs to be able to reconstruct the \fIframe state\fP -of each frame in a call\-chain. The frame state -describes the subset of the machine\-state that consists of the +of each frame in a call\-chain. The frame state +describes the subset of the machine\-state that consists of the \fIframe registers\fP -(typically the instruction\-pointer and the -stack\-pointer) and all callee\-saved registers (preserved registers). -The frame state describes each register either by providing its -current value (for frame registers) or by providing the location at -which the current value is stored (callee\-saved registers). +(typically the instruction\-pointer and the +stack\-pointer) and all callee\-saved registers (preserved registers). +The frame state describes each register either by providing its +current value (for frame registers) or by providing the location at +which the current value is stored (callee\-saved registers). .PP -For statically generated code, the compiler normally takes care of +For statically generated code, the compiler normally takes care of emitting \fIunwind\-info\fP -which provides the minimum amount of -information needed to reconstruct the frame\-state for each instruction -in a procedure. For dynamically generated code, the runtime code -generator must use the dynamic unwind\-info interface provided by +which provides the minimum amount of +information needed to reconstruct the frame\-state for each instruction +in a procedure. For dynamically generated code, the runtime code +generator must use the dynamic unwind\-info interface provided by libunwind -to supply the equivalent information. This manual -page describes the format of this information in detail. +to supply the equivalent information. This manual +page describes the format of this information in detail. .PP For the purpose of this discussion, a \fIprocedure\fP -is defined to +is defined to be an arbitrary piece of \fIcontiguous\fP -code. Normally, each -procedure directly corresponds to a function in the source\-language -but this is not strictly required. For example, a runtime -code\-generator could translate a given function into two separate -(discontiguous) procedures: one for frequently\-executed (hot) code and -one for rarely\-executed (cold) code. Similarly, simple -source\-language functions (usually leaf functions) may get translated -into code for which the default unwind\-conventions apply and for such -code, it is not strictly necessary to register dynamic unwind\-info. +code. Normally, each +procedure directly corresponds to a function in the source\-language +but this is not strictly required. For example, a runtime +code\-generator could translate a given function into two separate +(discontiguous) procedures: one for frequently\-executed (hot) code and +one for rarely\-executed (cold) code. Similarly, simple +source\-language functions (usually leaf functions) may get translated +into code for which the default unwind\-conventions apply and for such +code, it is not strictly necessary to register dynamic unwind\-info. .PP A procedure logically consists of a sequence of \fIregions\fP\&. -Regions are nested in the sense that the frame state at the end of one -region is, by default, assumed to be the frame state for the next -region. Each region is thought of as being divided into a +Regions are nested in the sense that the frame state at the end of one +region is, by default, assumed to be the frame state for the next +region. Each region is thought of as being divided into a \fIprologue\fP, a \fIbody\fP, and an \fIepilogue\fP\&. -Each of them -can be empty. If non\-empty, the prologue sets up the frame state for -the body. For example, the prologue may need to allocate some space -on the stack and save certain callee\-saved registers. The body -performs the actual work of the procedure but does not change the -frame state in any way. If non\-empty, the epilogue restores the -previous frame state and as such it undoes or cancels the effect of -the prologue. In fact, a single epilogue may undo the effect of the -prologues of several (nested) regions. -.PP -We should point out that even though the prologue, body, and epilogue -are logically separate entities, optimizing code\-generators will -generally interleave instructions from all three entities. For this +Each of them +can be empty. If non\-empty, the prologue sets up the frame state for +the body. For example, the prologue may need to allocate some space +on the stack and save certain callee\-saved registers. The body +performs the actual work of the procedure but does not change the +frame state in any way. If non\-empty, the epilogue restores the +previous frame state and as such it undoes or cancels the effect of +the prologue. In fact, a single epilogue may undo the effect of the +prologues of several (nested) regions. +.PP +We should point out that even though the prologue, body, and epilogue +are logically separate entities, optimizing code\-generators will +generally interleave instructions from all three entities. For this reason, the dynamic unwind\-info interface of libunwind -makes no -distinction whatsoever between prologue and body. Similarly, the -exact set of instructions that make up an epilogue is also irrelevant. -The only point in the epilogue that needs to be described explicitly -by the dynamic unwind\-info is the point at which the stack\-pointer -gets restored. The reason this point needs to be described is that -once the stack\-pointer is restored, all values saved in the -deallocated portion of the stack frame become invalid and hence +makes no +distinction whatsoever between prologue and body. Similarly, the +exact set of instructions that make up an epilogue is also irrelevant. +The only point in the epilogue that needs to be described explicitly +by the dynamic unwind\-info is the point at which the stack\-pointer +gets restored. The reason this point needs to be described is that +once the stack\-pointer is restored, all values saved in the +deallocated portion of the stack frame become invalid and hence libunwind -needs to know about it. The portion of the frame -state not saved on the stack is assumed to remain valid through the end -of the region. For this reason, there is usually no need to describe -instructions which restore the contents of callee\-saved registers. -.PP -Within a region, each instruction that affects the frame state in some -fashion needs to be described with an operation descriptor. For this -purpose, each instruction in the region is assigned a unique index. -Exactly how this index is derived depends on the architecture. For -example, on RISC and EPIC\-style architecture, instructions have a -fixed size so it\&'s possible to simply number the instructions. In -contrast, most CISC use variable\-length instruction encodings, so it -is usually necessary to use a byte\-offset as the index. Given the -instruction index, the operation descriptor specifies the effect of -the instruction in an abstract manner. For example, it might express +needs to know about it. The portion of the frame +state not saved on the stack is assumed to remain valid through the end +of the region. For this reason, there is usually no need to describe +instructions which restore the contents of callee\-saved registers. +.PP +Within a region, each instruction that affects the frame state in some +fashion needs to be described with an operation descriptor. For this +purpose, each instruction in the region is assigned a unique index. +Exactly how this index is derived depends on the architecture. For +example, on RISC and EPIC\-style architecture, instructions have a +fixed size so it\&'s possible to simply number the instructions. In +contrast, most CISC use variable\-length instruction encodings, so it +is usually necessary to use a byte\-offset as the index. Given the +instruction index, the operation descriptor specifies the effect of +the instruction in an abstract manner. For example, it might express that the instruction stores callee\-saved register r1 -at offset 16 -in the stack frame. +at offset 16 +in the stack frame. .PP .SH PROCEDURES .PP -A runtime code\-generator registers the dynamic unwind\-info of a +A runtime code\-generator registers the dynamic unwind\-info of a procedure by setting up a structure of type unw_dyn_info_t and calling _U_dyn_register(), -passing the address of the -structure as the sole argument. The members of the +passing the address of the +structure as the sole argument. The members of the unw_dyn_info_t -structure are described below: +structure are described below: .TP void *next Private to libunwind\&. -Must not be used -by the application. +Must not be used +by the application. .TP void *prev Private to libunwind\&. -Must not be used -by the application. +Must not be used +by the application. .TP unw_word_t start_ip - The start\-address of the -instructions of the procedure (remember: procedure are defined to be -contiguous pieces of code, so a single code\-range is sufficient). + The start\-address of the +instructions of the procedure (remember: procedure are defined to be +contiguous pieces of code, so a single code\-range is sufficient). .TP unw_word_t end_ip - The end\-address of the -instructions of the procedure (non\-inclusive, that is, + The end\-address of the +instructions of the procedure (non\-inclusive, that is, end_ip\-start_ip -is the size of the procedure in -bytes). +is the size of the procedure in +bytes). .TP unw_word_t gp - The global\-pointer value in use -for this procedure. The exact meaning of the global\-pointer is -architecture\-specific and on some architecture, it is not used at -all. + The global\-pointer value in use +for this procedure. The exact meaning of the global\-pointer is +architecture\-specific and on some architecture, it is not used at +all. .TP int32_t format - The format of the unwind\-info. + The format of the unwind\-info. This member can be one of UNW_INFO_FORMAT_DYNAMIC, UNW_INFO_FORMAT_TABLE, -or +or UNW_INFO_FORMAT_REMOTE_TABLE\&. .TP union u - This union contains one sub\-member -structure for every possible unwind\-info format: + This union contains one sub\-member +structure for every possible unwind\-info format: .RS .TP unw_dyn_proc_info_t pi - This member is used + This member is used for format UNW_INFO_FORMAT_DYNAMIC\&. .TP unw_dyn_table_info_t ti - This member is used + This member is used for format UNW_INFO_FORMAT_TABLE\&. .TP unw_dyn_remote_table_info_t rti - This member + This member is used for format UNW_INFO_FORMAT_REMOTE_TABLE\&. .RE .RS .PP -The format of these sub\-members is described in detail below. +The format of these sub\-members is described in detail below. .RE .PP .SS PROC\-INFO FORMAT .PP -This is the preferred dynamic unwind\-info format and it is generally -the one used by full\-blown runtime code\-generators. In this format, -the details of a procedure are described by a structure of type +This is the preferred dynamic unwind\-info format and it is generally +the one used by full\-blown runtime code generators. In this format, +the details of a procedure are described by a structure of type unw_dyn_proc_info_t\&. -This structure contains the following -members: +This structure contains the following +members: .PP -.RE .TP unw_word_t name_ptr - The address of a -(human\-readable) name of the procedure or 0 if no such name is -available. If non\-zero, the string stored at this address must be -ASCII NUL terminated. For source languages that use name\-mangling -(such as C++ or Java) the string stored at this address should be + The address of a +(human\-readable) name of the procedure or 0 if no such name is +available. If non\-zero, the string stored at this address must be +ASCII NUL terminated. For source languages that use name mangling +(such as C++ or Java) the string stored at this address should be the \fIdemangled\fP -version of the name. +version of the name. .PP .TP unw_word_t handler - The address of the -personality\-routine for this procedure. Personality\-routines are -used in conjunction with exception handling. See the C++ ABI draft -(http://www.codesourcery.com/cxx\-abi/) for an overview and a -description of the personality routine. If the procedure has no + The address of the +personality routine for this procedure. Personality routines are +used in conjunction with exception handling. See the C++ ABI draft +(http://www.codesourcery.com/cxx\-abi/) for an overview and a +description of the personality routine. If the procedure has no personality routine, handler -must be set to 0. +must be set to 0. .PP .TP uint32_t flags - A bitmask of flags. At the -moment, no flags have been defined and this member must be -set to 0. + A bitmask of flags. At the +moment, no flags have been defined and this member must be +set to 0. .PP .TP unw_dyn_region_info_t *regions - A NULL\-terminated -linked list of region\-descriptors. See section ``Region -descriptors\&'' below for more details. + A NULL\-terminated +linked list of region descriptors. See section ``Region +descriptors\&'' below for more details. .PP .SS TABLE\-INFO FORMAT .PP -This format is generally used when the dynamically generated code was -derived from static code and the unwind\-info for the dynamic and the -static versions are identical. For example, this format can be useful -when loading statically\-generated code into an address\-space in a -non\-standard fashion (i.e., through some means other than +This format is generally used when the dynamically generated code was +derived from static code and the unwind\-info for the dynamic and the +static versions are identical. For example, this format can be useful +when loading statically\-generated code into an address\-space in a +non\-standard fashion (i.e., through some means other than dlopen()). -In this format, the details of a group of procedures +In this format, the details of a group of procedures is described by a structure of type unw_dyn_table_info\&. -This structure contains the following members: +This structure contains the following members: .PP .TP unw_word_t name_ptr - The address of a -(human\-readable) name of the procedure or 0 if no such name is -available. If non\-zero, the string stored at this address must be -ASCII NUL terminated. For source languages that use name\-mangling -(such as C++ or Java) the string stored at this address should be + The address of a +(human\-readable) name of the procedure or 0 if no such name is +available. If non\-zero, the string stored at this address must be +ASCII NUL terminated. For source languages that use name\-mangling +(such as C++ or Java) the string stored at this address should be the \fIdemangled\fP -version of the name. +version of the name. .PP .TP unw_word_t segbase - The segment\-base value -that needs to be added to the segment\-relative values stored in the -unwind\-info. The exact meaning of this value is -architecture\-specific. + The segment\-base value +that needs to be added to the segment\-relative values stored in the +unwind\-info. The exact meaning of this value is +architecture\-specific. .PP .TP unw_word_t table_len - The length of the + The length of the unwind\-info (table_data) -counted in units of words +counted in units of words (unw_word_t). .PP .TP unw_word_t table_data - A pointer to the actual -data encoding the unwind\-info. The exact format is -architecture\-specific (see architecture\-specific sections below). + A pointer to the actual +data encoding the unwind info. The exact format is +architecture\-specific (see architecture\-specific sections below). .PP .SS REMOTE TABLE\-INFO FORMAT .PP -The remote table\-info format has the same basic purpose as the regular +The remote table\-info format has the same basic purpose as the regular table\-info format. The only difference is that when libunwind -uses the unwind\-info, it will keep the table data in the target -address\-space (which may be remote). Consequently, the type of the +uses the unwind\-info, it will keep the table data in the target +address\-space (which may be remote). Consequently, the type of the table_data member is unw_word_t -rather than a pointer. +rather than a pointer. This implies that libunwind -will have to access the table\-data +will have to access the table\-data via the address\-space\&'s access_mem() -call\-back, rather than -through a direct memory reference. +call\-back, rather than +through a direct memory reference. .PP -From the point of view of a runtime\-code generator, the remote -table\-info format offers no advantage and it is expected that such -generators will describe their procedures either with the proc\-info -format or the normal table\-info format. The main reason that the -remote table\-info format exists is to enable the +From the point of view of a runtime code generator, the remote +table\-info format offers no advantage and it is expected that such +generators will describe their procedures either with the proc\-info +format or the normal table\-info format. The main reason that the +remote table\-info format exists is to enable the address\-space\-specific find_proc_info() -callback (see -unw_create_addr_space(3)) -to return unwind tables whose -data remains in remote memory. This can speed up unwinding (e.g., for -a debugger) because it reduces the amount of data that needs to be -loaded from remote memory. +callback (see +unw_create_addr_space(3libunwind)) +to return unwind tables whose +data remains in remote memory. This can speed up unwinding (e.g., for +a debugger) because it reduces the amount of data that needs to be +loaded from remote memory. .PP .SH REGIONS DESCRIPTORS .PP -A region descriptor is a variable length structure that describes how -each instruction in the region affects the frame state. Of course, -most instructions in a region usually do not change the frame state and -for those, nothing needs to be recorded in the region descriptor. A -region descriptor is a structure of type +A region descriptor is a variable length structure that describes how +each instruction in the region affects the frame state. Of course, +most instructions in a region usually do not change the frame state and +for those, nothing needs to be recorded in the region descriptor. A +region descriptor is a structure of type unw_dyn_region_info_t -and has the following members: +and has the following members: .TP unw_dyn_region_info_t *next - A pointer to the + A pointer to the next region. If this is the last region, next is NULL\&. .TP int32_t insn_count - The length of the region in -instructions. Each instruction is assumed to have a fixed size (see -architecture\-specific sections for details). The value of + The length of the region in +instructions. Each instruction is assumed to have a fixed size (see +architecture\-specific sections for details). The value of insn_count -may be negative in the last region of a procedure +may be negative in the last region of a procedure (i.e., it may be negative only if next is NULL). -A +A negative value indicates that the region covers the last \fIN\fP instructions of the procedure, where \fIN\fP -is the absolute value +is the absolute value of insn_count\&. .TP uint32_t op_count - The (allocated) length of + The (allocated) length of the op_count -array. +array. .TP unw_dyn_op_t op - An array of dynamic unwind -directives. See Section ``Dynamic unwind directives\&'' for a -description of the directives. + An array of dynamic unwind +directives. See Section ``Dynamic unwind directives\&'' for a +description of the directives. .PP A region descriptor with an insn_count -of zero is an +of zero is an \fIempty region\fP -and such regions are perfectly legal. In fact, -empty regions can be useful to establish a particular frame state -before the start of another region. -.PP -A single region list can be shared across multiple procedures provided -those procedures share a common prologue and epilogue (their bodies -may differ, of course). Normally, such procedures consist of a canned -prologue, the body, and a canned epilogue. This could be described by -two regions: one covering the prologue and one covering the epilogue. -Since the body length is variable, the latter region would need to +and such regions are perfectly legal. In fact, +empty regions can be useful to establish a particular frame state +before the start of another region. +.PP +A single region list can be shared across multiple procedures provided +those procedures share a common prologue and epilogue (their bodies +may differ, of course). Normally, such procedures consist of a canned +prologue, the body, and a canned epilogue. This could be described by +two regions: one covering the prologue and one covering the epilogue. +Since the body length is variable, the latter region would need to specify a negative value in insn_count -such that +such that libunwind -knows that the region covers the end of the procedure +knows that the region covers the end of the procedure (up to the address specified by end_ip). .PP -The region descriptor is a variable length structure to make it -possible to allocate all the necessary memory with a single -memory\-allocation request. To facilitate the allocation of a region +The region descriptor is a variable length structure to make it +possible to allocate all the necessary memory with a single +memory\-allocation request. To facilitate the allocation of a region descriptors libunwind -provides a helper routine with the -following synopsis: +provides a helper routine with the +following synopsis: .PP size_t _U_dyn_region_size(int op_count); .PP -This routine returns the number of bytes needed to hold a region +This routine returns the number of bytes needed to hold a region descriptor with space for op_count -unwind directives. Note +unwind directives. Note that the length of the op -array does not have to match exactly -with the number of directives in a region. Instead, it is sufficient +array does not have to match exactly +with the number of directives in a region. Instead, it is sufficient if the op -array contains at least as many entries as there are -directives, since the end of the directives can always be indicated +array contains at least as many entries as there are +directives, since the end of the directives can always be indicated with the UNW_DYN_STOP -directive. +directive. .PP .SH DYNAMIC UNWIND DIRECTIVES .PP -A dynamic unwind directive describes how the frame state changes -at a particular point within a region. The description is in +A dynamic unwind directive describes how the frame state changes +at a particular point within a region. The description is in the form of a structure of type unw_dyn_op_t\&. -This -structure has the following members: +This +structure has the following members: .TP int8_t tag - The operation tag. Must be one + The operation tag. Must be one of the unw_dyn_operation_t -values described below. +values described below. .TP int8_t qp - The qualifying predicate that controls -whether or not this directive is active. This is useful for -predicated architectures such as IA\-64 or ARM, where the contents of -another (callee\-saved) register determines whether or not an -instruction is executed (takes effect). If the directive is always -active, this member should be set to the manifest constant + The qualifying predicate that controls +whether or not this directive is active. This is useful for +predicated architectures such as IA\-64 or ARM, where the contents of +another (callee\-saved) register determines whether or not an +instruction is executed (takes effect). If the directive is always +active, this member should be set to the manifest constant _U_QP_TRUE -(this constant is defined for all -architectures, predicated or not). +(this constant is defined for all +architectures, predicated or not). .TP int16_t reg - The number of the register affected -by the instruction. + The number of the register affected +by the instruction. .TP int32_t when - The region\-relative number of -the instruction to which this directive applies. For example, -a value of 0 means that the effect described by this directive -has taken place once the first instruction in the region has -executed. + The region\-relative number of +the instruction to which this directive applies. For example, +a value of 0 means that the effect described by this directive +has taken place once the first instruction in the region has +executed. .TP unw_word_t val - The value to be applied by the -operation tag. The exact meaning of this value varies by tag. See -Section ``Operation tags\&'' below. + The value to be applied by the +operation tag. The exact meaning of this value varies by tag. See +Section ``Operation tags\&'' below. .PP -It is perfectly legitimate to specify multiple dynamic unwind +It is perfectly legitimate to specify multiple dynamic unwind directives with the same when -value, if a particular instruction -has a complex effect on the frame state. +value, if a particular instruction +has a complex effect on the frame state. .PP -Empty regions by definition contain no actual instructions and as such -the directives are not tied to a particular instruction. By +Empty regions by definition contain no actual instructions and as such +the directives are not tied to a particular instruction. By convention, the when -member should be set to 0, however. +member should be set to 0, however. .PP -There is no need for the dynamic unwind directives to appear +There is no need for the dynamic unwind directives to appear in order of increasing when -values. If the directives happen to -be sorted in that order, it may result in slightly faster execution, -but a runtime code\-generator should not go to extra lengths just to -ensure that the directives are sorted. +values. If the directives happen to +be sorted in that order, it may result in slightly faster execution, +but a runtime code\-generator should not go to extra lengths just to +ensure that the directives are sorted. .PP IMPLEMENTATION NOTE: should libunwind -implementations for -certain architectures prefer the list of unwind directives to be -sorted, it is recommended that such implementations first check -whether the list happens to be sorted already and, if not, sort the -directives explicitly before the first use. With this approach, the -overhead of explicit sorting is only paid when there is a real benefit -and if the runtime code\-generator happens to generate sorted lists -naturally, the performance penalty is limited to a simple O(N) check. +implementations for +certain architectures prefer the list of unwind directives to be +sorted, it is recommended that such implementations first check +whether the list happens to be sorted already and, if not, sort the +directives explicitly before the first use. With this approach, the +overhead of explicit sorting is only paid when there is a real benefit +and if the runtime code\-generator happens to generate sorted lists +naturally, the performance penalty is limited to a simple O(N) check. .PP .SS OPERATIONS TAGS .PP -The possible operation tags are defined by enumeration type +The possible operation tags are defined by enumeration type unw_dyn_operation_t -which defines the following -values: +which defines the following +values: .PP .TP UNW_DYN_STOP - Marks the end of the dynamic unwind + Marks the end of the dynamic unwind directive list. All remaining entries in the op -array of the -region\-descriptor are ignored. This tag is guaranteed to have a -value of 0. +array of the +region\-descriptor are ignored. This tag is guaranteed to have a +value of 0. .PP .TP UNW_DYN_SAVE_REG - Marks an instruction which saves + Marks an instruction which saves register reg to register val\&. .PP .TP UNW_DYN_SPILL_FP_REL - Marks an instruction which + Marks an instruction which spills register reg -to a frame\-pointer\-relative location. The -frame\-pointer\-relative offset is given by the value stored in member +to a frame\-pointer\-relative location. The +frame\-pointer\-relative offset is given by the value stored in member val\&. -See the architecture\-specific sections for a description -of the stack frame layout. +See the architecture\-specific sections for a description +of the stack frame layout. .PP .TP UNW_DYN_SPILL_SP_REL - Marks an instruction which + Marks an instruction which spills register reg -to a stack\-pointer\-relative location. The -stack\-pointer\-relative offset is given by the value stored in member +to a stack\-pointer\-relative location. The +stack\-pointer\-relative offset is given by the value stored in member val\&. -See the architecture\-specific sections for a description -of the stack frame layout. +See the architecture\-specific sections for a description +of the stack frame layout. .PP .TP UNW_DYN_ADD - Marks an instruction which adds + Marks an instruction which adds the constant value val to register reg\&. -To add subtract -a constant value, store the two\&'s\-complement of the value in +To add subtract +a constant value, store the two\&'s\-complement of the value in val\&. -The set of registers that can be specified for this tag -is described in the architecture\-specific sections below. +The set of registers that can be specified for this tag +is described in the architecture\-specific sections below. .PP .TP UNW_DYN_POP_FRAMES @@ -496,36 +497,36 @@ .TP UNW_DYN_ALIAS .PP -unw_dyn_op_t +unw_dyn_op_t .PP -_U_dyn_op_save_reg(); -_U_dyn_op_spill_fp_rel(); -_U_dyn_op_spill_sp_rel(); -_U_dyn_op_add(); -_U_dyn_op_pop_frames(); -_U_dyn_op_label_state(); -_U_dyn_op_copy_state(); -_U_dyn_op_alias(); -_U_dyn_op_stop(); +_U_dyn_op_save_reg(); +_U_dyn_op_spill_fp_rel(); +_U_dyn_op_spill_sp_rel(); +_U_dyn_op_add(); +_U_dyn_op_pop_frames(); +_U_dyn_op_label_state(); +_U_dyn_op_copy_state(); +_U_dyn_op_alias(); +_U_dyn_op_stop(); .PP .SH IA\-64 SPECIFICS .PP -\- meaning of segbase member in table\-info/table\-remote\-info format -\- format of table_data in table\-info/table\-remote\-info format -\- instruction size: each bundle is counted as 3 instructions, regardless -of template (MLX) -\- describe stack\-frame layout, especially with regards to sp\-relative -and fp\-relative addressing -\- UNW_DYN_ADD can only add to ``sp\&'' (always a negative value); use -POP_FRAMES otherwise +\- meaning of segbase member in table\-info/table\-remote\-info format +\- format of table_data in table\-info/table\-remote\-info format +\- instruction size: each bundle is counted as 3 instructions, regardless +of template (MLX) +\- describe stack\-frame layout, especially with regards to sp\-relative +and fp\-relative addressing +\- UNW_DYN_ADD can only add to ``sp\&'' (always a negative value); use +POP_FRAMES otherwise .PP .SH SEE ALSO .PP -libunwind(3), -_U_dyn_register(3), -_U_dyn_cancel(3) +libunwind(3libunwind), +_U_dyn_register(3libunwind), +_U_dyn_cancel(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/libunwind-dynamic.tex libunwind-1.8.1/doc/libunwind-dynamic.tex --- libunwind-1.7.2/doc/libunwind-dynamic.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-dynamic.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{libunwind-dynamic}{David Mosberger-Tang}{Programming Library}{Introduction to dynamic unwind-info}libunwind-dynamic -- libunwind-support for runtime-generated code +\begin{Name}{3libunwind}{libunwind-dynamic}{David Mosberger-Tang}{Programming Library}{Introduction to dynamic unwind-info}libunwind-dynamic -- libunwind-support for runtime-generated code \end{Name} \section{Introduction} @@ -124,7 +124,7 @@ \subsection{Proc-info format} This is the preferred dynamic unwind-info format and it is generally -the one used by full-blown runtime code-generators. In this format, +the one used by full-blown runtime code generators. In this format, the details of a procedure are described by a structure of type \Type{unw\_dyn\_proc\_info\_t}. This structure contains the following members: @@ -133,12 +133,12 @@ \item[\Type{unw\_word\_t} \Var{name\_ptr}] The address of a (human-readable) name of the procedure or 0 if no such name is available. If non-zero, the string stored at this address must be - ASCII NUL terminated. For source languages that use name-mangling + ASCII NUL terminated. For source languages that use name mangling (such as C++ or Java) the string stored at this address should be the \emph{demangled} version of the name. \item[\Type{unw\_word\_t} \Var{handler}] The address of the - personality-routine for this procedure. Personality-routines are + personality routine for this procedure. Personality routines are used in conjunction with exception handling. See the C++ ABI draft (http://www.codesourcery.com/cxx-abi/) for an overview and a description of the personality routine. If the procedure has no @@ -149,7 +149,7 @@ set to 0. \item[\Type{unw\_dyn\_region\_info\_t~*}\Var{regions}] A NULL-terminated - linked list of region-descriptors. See section ``Region + linked list of region descriptors. See section ``Region descriptors'' below for more details. \end{description} @@ -183,7 +183,7 @@ (\Type{unw\_word\_t}). \item[\Type{unw\_word\_t} \Var{table\_data}] A pointer to the actual - data encoding the unwind-info. The exact format is + data encoding the unwind info. The exact format is architecture-specific (see architecture-specific sections below). \end{description} @@ -199,13 +199,13 @@ via the address-space's \Func{access\_mem}() call-back, rather than through a direct memory reference. -From the point of view of a runtime-code generator, the remote +From the point of view of a runtime code generator, the remote table-info format offers no advantage and it is expected that such generators will describe their procedures either with the proc-info format or the normal table-info format. The main reason that the remote table-info format exists is to enable the address-space-specific \Func{find\_proc\_info}() callback (see -\SeeAlso{unw\_create\_addr\_space}(3)) to return unwind tables whose +\SeeAlso{unw\_create\_addr\_space}(3libunwind)) to return unwind tables whose data remains in remote memory. This can speed up unwinding (e.g., for a debugger) because it reduces the amount of data that needs to be loaded from remote memory. @@ -386,9 +386,9 @@ \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{\_U\_dyn\_register(3)}, -\SeeAlso{\_U\_dyn\_cancel(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{\_U\_dyn\_register}(3libunwind), +\SeeAlso{\_U\_dyn\_cancel}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/libunwind-ia64.man libunwind-1.8.1/doc/libunwind-ia64.man --- libunwind-1.7.2/doc/libunwind-ia64.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-ia64.man 2024-02-22 14:07:09.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:44 MDT 2007 +.\" Manual page created with latex2man on Thu Feb 22 09:07:09 2024 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "LIBUNWIND\-IA64" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "LIBUNWIND\-IA64" "3libunwind" "22 February 2024" "Programming Library " "Programming Library " .SH NAME libunwind\-ia64 \-\- IA\-64\-specific support in libunwind @@ -301,7 +303,7 @@ .SH SEE ALSO .PP -libunwind(3) +libunwind(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/libunwind-ia64.tex libunwind-1.8.1/doc/libunwind-ia64.tex --- libunwind-1.7.2/doc/libunwind-ia64.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-ia64.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{libunwind-ia64}{David Mosberger-Tang}{Programming Library}{IA-64-specific support in libunwind}libunwind-ia64 -- IA-64-specific support in libunwind +\begin{Name}{3libunwind}{libunwind-ia64}{David Mosberger-Tang}{Programming Library}{IA-64-specific support in libunwind}libunwind-ia64 -- IA-64-specific support in libunwind \end{Name} @@ -203,7 +203,7 @@ \section{See Also} -\SeeAlso{libunwind(3)} +\SeeAlso{libunwind}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/libunwind-nto.man libunwind-1.8.1/doc/libunwind-nto.man --- libunwind-1.7.2/doc/libunwind-nto.man 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-nto.man 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,256 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} +'\" t +.\" Manual page created with latex2man on Tue Aug 29 10:53:41 2023 +.\" NOTE: This file is generated, DO NOT EDIT. +.de Vb +.ft CW +.nf +.. +.de Ve +.ft R + +.fi +.. +.TH "LIBUNWIND\-NTO" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " +.SH NAME +libunwind\-nto +\-\- QNX Neutrino support in libunwind +.SH SYNOPSIS + +.PP +#include +.br +.PP +unw_accessors_t +unw_nto_accessors; +.br +.PP +void *unw_nto_create(pid_t, +pthread_t); +.br +void unw_nto_destroy(void *); +.br +.PP +int +unw_nto_find_proc_info(unw_addr_space_t, +unw_word_t, +unw_proc_info_t *, +int, +void *); +.br +void +unw_nto_put_unwind_info(unw_addr_space_t, +unw_proc_info_t *, +void *); +.br +int +unw_nto_get_dyn_info_list_addr(unw_addr_space_t, +unw_word_t *, +void *); +.br +int +unw_nto_access_mem(unw_addr_space_t, +unw_word_t, +unw_word_t *, +int, +void *); +.br +int +unw_nto_access_reg(unw_addr_space_t, +unw_regnum_t, +unw_word_t *, +int, +void *); +.br +int +unw_nto_access_fpreg(unw_addr_space_t, +unw_regnum_t, +unw_fpreg_t *, +int, +void *); +.br +int +unw_nto_get_proc_name(unw_addr_space_t, +unw_word_t, +char *, +size_t, +unw_word_t *, +void *); +.br +int +unw_nto_resume(unw_addr_space_t, +unw_cursor_t *, +void *); +.br +.PP +.SH DESCRIPTION + +.PP +The QNX operating system makes it possible for a process to +gain access to the machine state and virtual memory of \fIanother\fP +process, or a different thread within the same process. +gain access to the machine state and virtual memory of \fIanother\fP +it is possible to hook up libunwind +to another process. +While it\&'s not very difficult to do so directly, +libunwind +further facilitates this task by providing +ready\-to\-use callbacks for this purpose. +The routines and variables +implementing this facility use a name prefix of unw_nto, +which is stands for ``unwind\-via\-nto\&''\&. +.PP +An application that wants to use the libunwind +NTO remote needs +to take the following steps. +.PP +.TP +1. +Create a new libunwind address\-space that represents the target +process and thread. This is done by calling +unw_create_addr_space(). +In many cases, the application will +simply want to pass the address of unw_nto_accessors +as the +first argument to this routine. Doing so will ensure that +libunwind +will be able to properly unwind the target process. +.PP +.TP +2. +Create an NTO info structure by calling unw_nto_create(), +passing the pid and tid of the target process thread as the arguments. +This will stop the target thread. The process ID (pid) of the target +process must be known, and only a single thread can be unwound at a time +so the thread ID (tid) must also be specified. +.PP +.TP +3. +The opaque pointer returned then needs to be passed as the +``argument\&'' pointer (third argument) to unw_init_remote(). +.PP +When the application is done using libunwind +on the target process, +unw_nto_destroy() +needs to be called, passing it the opaque pointer +that was returned by the call to unw_nto_create(). +This ensures that +all memory and other resources are freed up. +.PP +The unw_nto_resume() +is not supported on the NTO remote. +.PP +In special circumstances, an application may prefer to use +only portions of the libunwind +NTO remote. For this reason, the +individual callback routines (unw_nto_find_proc_info(), +unw_nto_put_unwind_info(), +etc.) are also available for direct +use. Of course, the addresses of these routines could also be picked +up from unw_nto_accessors, +but doing so would prevent static +initialization. Also, when using unw_nto_accessors, +\fIall\fP +the callback routines will be linked into the application, even if +they are never actually called. +.PP +.SH THREAD SAFETY + +.PP +The libunwind +NTO remote assumes that a single unw_nto\-info +structure is never shared between threads of the unwinding program. +Because of this, +no explicit locking is used. +As long as only one thread uses an NTO info structure at any given time, +this facility is thread\-safe. +.PP +.SH RETURN VALUE + +.PP +unw_nto_create() +may return a NULL if it fails +to create the NTO info structure for any reason. +.PP +.SH FILES + +.PP +.TP +libunwind\-nto.h + Headerfile to include when using the +interface defined by this library. +.TP +\fB\-l\fPunwind\-nto \fB\-l\fPunwind\-generic + Linker\-switches to add when building a program that uses the +functions defined by this library. +.PP +.SH EXAMPLE + +.Vb + #include + #include + #include + + int + main (int argc, char **argv) + { + if (argc != 2) { + fprintf (stderr, "usage: %s PID\\n", argv[0]); + exit (EXIT_FAILURE); + } + + char *endptr; + pid_t target_pid = strtoul (argv[1], &endptr, 10); + if (target_pid == 0 && argv[1] == endptr) { + fprintf (stderr, "usage: %s PID\\n", argv[0]); + exit (EXIT_FAILURE); + } + + unw_addr_space_t as = unw_create_addr_space (&unw_nto_accessors, 0); + if (!as) { + fprintf (stderr, "unw_create_addr_space() failed"); + exit (EXIT_FAILURE); + } + + void *ui = unw_nto_create (target_pid, (thread_t)1); + if (!ui) { + fprintf (stderr, "unw_nto_create() failed"); + exit (EXIT_FAILURE); + } + + unw_cursor_t cursor; + int ret = unw_init_remote (&cursor, as, ui); + if (ret < 0) { + fprintf (stderr, "unw_init_remote() failed: ret=%d\\n", ret); + exit (EXIT_FAILURE); + } + + do { + unw_proc_info_t pi; + ret = unw_get_proc_info (&cursor, &pi); + if (ret == \-UNW_ENOINFO) { + fprintf (stdout, "no info\\n"); + } else if (ret >= 0) { + printf ("\\tproc=%#016lx\-%#016lx\\thandler=%#016lx lsda=%#016lx", + (long) pi.start_ip, (long) pi.end_ip, + (long) pi.handler, (long) pi.lsda); + } + ret = unw_step (&cursor); + } while (ret > 0); + if (ret < 0) { + fprintf (stderr, "unwind failed with ret=%d\\n", ret); + exit (EXIT_FAILURE); + } + + unw_nto_destroy (ui); + unw_destroy_addr_space (as); + exit (EXIT_SUCCESS); + } +.Ve +.PP +.SH SEE ALSO + +libunwind(3libunwind) +.PP +.\" NOTE: This file is generated, DO NOT EDIT. diff -Nru libunwind-1.7.2/doc/libunwind-nto.tex libunwind-1.8.1/doc/libunwind-nto.tex --- libunwind-1.7.2/doc/libunwind-nto.tex 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-nto.tex 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,183 @@ +\documentclass{article} +\usepackage[fancyhdr,pdf]{latex2man} + +\input{common.tex} + +\begin{document} + +\begin{Name}{3libunwind}{libunwind-nto}{Blackberry}{Programming Library}{QNX Neutrino remote for libunwind}libunwind-nto -- QNX Neutrino support in libunwind +\end{Name} +\section{Synopsis} + +\File{\#include $<$libunwind-nto.h$>$}\\ + +\noindent +\Type{unw\_accessors\_t} \Var{unw\_nto\_accessors};\\ + +\Type{void~*}\Func{unw\_nto\_create}(\Type{pid\_t}, \Type{pthread\_t});\\ +\noindent +\Type{void}~\Func{unw\_nto\_destroy}(\Type{void~*});\\ + +\noindent +\Type{int} \Func{unw\_nto\_find\_proc\_info}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{unw\_proc\_info\_t~*}, \Type{int}, \Type{void~*});\\ +\noindent +\Type{void} \Func{unw\_nto\_put\_unwind\_info}(\Type{unw\_addr\_space\_t}, \Type{unw\_proc\_info\_t~*}, \Type{void~*});\\ +\noindent +\Type{int} \Func{unw\_nto\_get\_dyn\_info\_list\_addr}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t~*}, \Type{void~*});\\ +\noindent +\Type{int} \Func{unw\_nto\_access\_mem}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{unw\_word\_t~*}, \Type{int}, \Type{void~*});\\ +\noindent +\Type{int} \Func{unw\_nto\_access\_reg}(\Type{unw\_addr\_space\_t}, \Type{unw\_regnum\_t}, \Type{unw\_word\_t~*}, \Type{int}, \Type{void~*});\\ +\noindent +\Type{int} \Func{unw\_nto\_access\_fpreg}(\Type{unw\_addr\_space\_t}, \Type{unw\_regnum\_t}, \Type{unw\_fpreg\_t~*}, \Type{int}, \Type{void~*});\\ +\noindent +\Type{int} \Func{unw\_nto\_get\_proc\_name}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{char~*}, \Type{size\_t}, \Type{unw\_word\_t~*}, \Type{void~*});\\ +\noindent +\Type{int} \Func{unw\_nto\_resume}(\Type{unw\_addr\_space\_t}, \Type{unw\_cursor\_t~*}, \Type{void~*});\\ + +\section{Description} + +The QNX operating system makes it possible for a process to +gain access to the machine state and virtual memory of \emph{another} +process, or a different thread within the same process. +gain access to the machine state and virtual memory of \emph{another} +it is possible to hook up \Prog{libunwind} to another process. +While it's not very difficult to do so directly, +\Prog{libunwind} further facilitates this task by providing +ready-to-use callbacks for this purpose. +The routines and variables +implementing this facility use a name prefix of \Func{unw\_nto}, +which is stands for ``unwind-via-nto''. + +An application that wants to use the \Prog{libunwind} NTO remote needs +to take the following steps. +\begin{enumerate} + + \item Create a new \Prog{libunwind} address-space that represents the target + process and thread. This is done by calling + \Func{unw\_create\_addr\_space}(). In many cases, the application will + simply want to pass the address of \Var{unw\_nto\_accessors} as the + first argument to this routine. Doing so will ensure that + \Prog{libunwind} will be able to properly unwind the target process. + + \item Create an NTO info structure by calling \Func{unw\_nto\_create}(), + passing the pid and tid of the target process thread as the arguments. + This will stop the target thread. The process ID (pid) of the target + process must be known, and only a single thread can be unwound at a time + so the thread ID (tid) must also be specified. + + \item The opaque pointer returned then needs to be passed as the + ``argument'' pointer (third argument) to \Func{unw\_init\_remote}(). + +\end{enumerate} + +When the application is done using \Prog{libunwind} on the target process, +\Func{unw\_nto\_destroy}() needs to be called, passing it the opaque pointer +that was returned by the call to \Func{unw\_nto\_create}(). This ensures that +all memory and other resources are freed up. + +The \Func{unw\_nto\_resume}() is not supported on the NTO remote. + +In special circumstances, an application may prefer to use +only portions of the \Prog{libunwind} NTO remote. For this reason, the +individual callback routines (\Func{unw\_nto\_find\_proc\_info}(), +\Func{unw\_nto\_put\_unwind\_info}(), etc.) are also available for direct +use. Of course, the addresses of these routines could also be picked +up from \Var{unw\_nto\_accessors}, but doing so would prevent static +initialization. Also, when using \Var{unw\_nto\_accessors}, \emph{all} +the callback routines will be linked into the application, even if +they are never actually called. + +\section{Thread Safety} + +The \Prog{libunwind} NTO remote assumes that a single \Prog{unw\_nto}-info +structure is never shared between threads of the unwinding program. +Because of this, +no explicit locking is used. +As long as only one thread uses an NTO info structure at any given time, +this facility is thread-safe. + +\section{Return Value} + +\Func{unw\_nto\_create}() may return a NULL if it fails +to create the NTO info structure for any reason. + +\section{Files} + +\begin{Description} +\item[\File{libunwind-nto.h}] Headerfile to include when using the + interface defined by this library. +\item[\Opt{-l}\File{unwind-nto} \Opt{-l}\File{unwind-generic}] + Linker-switches to add when building a program that uses the + functions defined by this library. +\end{Description} + +\section{Example} +\begin{verbatim} + #include + #include + #include + + int + main (int argc, char **argv) + { + if (argc != 2) { + fprintf (stderr, "usage: %s PID\n", argv[0]); + exit (EXIT_FAILURE); + } + + char *endptr; + pid_t target_pid = strtoul (argv[1], &endptr, 10); + if (target_pid == 0 && argv[1] == endptr) { + fprintf (stderr, "usage: %s PID\n", argv[0]); + exit (EXIT_FAILURE); + } + + unw_addr_space_t as = unw_create_addr_space (&unw_nto_accessors, 0); + if (!as) { + fprintf (stderr, "unw_create_addr_space() failed"); + exit (EXIT_FAILURE); + } + + void *ui = unw_nto_create (target_pid, (thread_t)1); + if (!ui) { + fprintf (stderr, "unw_nto_create() failed"); + exit (EXIT_FAILURE); + } + + unw_cursor_t cursor; + int ret = unw_init_remote (&cursor, as, ui); + if (ret < 0) { + fprintf (stderr, "unw_init_remote() failed: ret=%d\n", ret); + exit (EXIT_FAILURE); + } + + do { + unw_proc_info_t pi; + ret = unw_get_proc_info (&cursor, &pi); + if (ret == -UNW_ENOINFO) { + fprintf (stdout, "no info\n"); + } else if (ret >= 0) { + printf ("\tproc=%#016lx-%#016lx\thandler=%#016lx lsda=%#016lx", + (long) pi.start_ip, (long) pi.end_ip, + (long) pi.handler, (long) pi.lsda); + } + ret = unw_step (&cursor); + } while (ret > 0); + if (ret < 0) { + fprintf (stderr, "unwind failed with ret=%d\n", ret); + exit (EXIT_FAILURE); + } + + unw_nto_destroy (ui); + unw_destroy_addr_space (as); + exit (EXIT_SUCCESS); + } +\end{verbatim} + +\section{See Also} +\SeeAlso{libunwind}(3libunwind) + +\LatexManEnd + +\end{document} diff -Nru libunwind-1.7.2/doc/libunwind-ptrace.man libunwind-1.8.1/doc/libunwind-ptrace.man --- libunwind-1.7.2/doc/libunwind-ptrace.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-ptrace.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:44 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 10:53:41 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,10 +12,10 @@ .fi .. -.TH "LIBUNWIND\-PTRACE" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "LIBUNWIND\-PTRACE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME libunwind\-ptrace -\-\- ptrace() support in libunwind +\-\- ptrace() support in libunwind .PP .SH SYNOPSIS @@ -27,58 +29,49 @@ .PP void *_UPT_create(pid_t); .br -void -_UPT_destroy(void *); +void _UPT_destroy(void *); .br .PP -int -_UPT_find_proc_info(unw_addr_space_t, +int _UPT_find_proc_info(unw_addr_space_t, unw_word_t, unw_proc_info_t *, int, void *); .br -void -_UPT_put_unwind_info(unw_addr_space_t, +void _UPT_put_unwind_info(unw_addr_space_t, unw_proc_info_t *, void *); .br -int -_UPT_get_dyn_info_list_addr(unw_addr_space_t, +int _UPT_get_dyn_info_list_addr(unw_addr_space_t, unw_word_t *, void *); .br -int -_UPT_access_mem(unw_addr_space_t, +int _UPT_access_mem(unw_addr_space_t, unw_word_t, unw_word_t *, int, void *); .br -int -_UPT_access_reg(unw_addr_space_t, +int _UPT_access_reg(unw_addr_space_t, unw_regnum_t, unw_word_t *, int, void *); .br -int -_UPT_access_fpreg(unw_addr_space_t, +int _UPT_access_fpreg(unw_addr_space_t, unw_regnum_t, unw_fpreg_t *, int, void *); .br -int -_UPT_get_proc_name(unw_addr_space_t, +int _UPT_get_proc_name(unw_addr_space_t, unw_word_t, char *, size_t, unw_word_t *, void *); .br -int -_UPT_resume(unw_addr_space_t, +int _UPT_resume(unw_addr_space_t, unw_cursor_t *, void *); .br @@ -87,9 +80,9 @@ .PP The ptrace(2) -system\-call makes it possible for a process to -gain access to the machine\-state and virtual memory of \fIanother\fP -process. With the right set of call\-back routines, it is therefore +system call makes it possible for a process to +gain access to the machine state and virtual memory of \fIanother\fP +process. With the right set of callback routines, it is therefore possible to hook up libunwind to another process via ptrace(2). @@ -97,117 +90,185 @@ libunwind further facilitates this task by providing ready\-to\-use callbacks for this purpose. The routines and variables -implementing this facility use a name\-prefix of _UPT, +implementing this facility use a name prefix of _UPT, which is -stands for ``unwind\-via\-ptrace\&''\&. +stands for ``unwind via ptrace\&''\&. .PP -An application that wants to use the _UPT\-facility -first needs -to create a new libunwind -address\-space that represents the -target process. This is done by calling -unw_create_addr_space(). -In many cases, the application -will simply want to pass the address of _UPT_accessors -as the -first argument to this routine. Doing so will ensure that -libunwind -will be able to properly unwind the target process. -However, in special circumstances, an application may prefer to use -only portions of the _UPT\-facility. -For this reason, the -individual callback routines (_UPT_find_proc_info(), +An application that wants to use the libunwind +ptrace remote needs to +take the folowing steps. +.PP +.TP +1. +Create a new libunwind address space that represents the target +process. This is done by calling unw_create_addr_space(). +In +many cases, the application will simply want to pass the address of +_UPT_accessors +as the first argument to this routine. Doing so +will ensure that libunwind +will be able to properly unwind the +target process. +.PP +.TP +2. +Turn on ptrace mode on the target process, either by forking a new +process, invoking PTRACE_TRACEME, +and then starting the target +program (via execve(2)), +or by directly attaching to an already +running process (via PTRACE_ATTACH). +.PP +.TP +3. +Once the process\-ID (pid) of the target process is known, a +UPT info structure can be created by calling +_UPT_create(), +passing the pid of the target process as the +only argument. +.PP +.TP +4. +The opaque pointer returned then needs to be passed as the +``argument\&'' pointer (third argument) to unw_init_remote(). +.PP +In special circumstances, an application may prefer to use only +portions of the libunwind +ptrace remote. For this reason, the individual +callback routines (_UPT_find_proc_info(), _UPT_put_unwind_info(), -etc.) are also available for direct -use. Of course, the addresses of these routines could also be picked -up from _UPT_accessors, -but doing so would prevent static -initialization. Also, when using _UPT_accessors, +etc.) are also available for direct use. Of +course, the addresses of these routines could also be picked up from +_UPT_accessors, +but doing so would prevent static initialization. Also, +when using _UPT_accessors, \fIall\fP -the callback routines will be linked into the application, even if -they are never actually called. -.PP -Next, the application can turn on ptrace\-mode on the target process, -either by forking a new process, invoking PTRACE_TRACEME, -and -then starting the target program (via execve(2)), -or by -directly attaching to an already running process (via -PTRACE_ATTACH). -Either way, once the process\-ID (pid) of the -target process is known, a _UPT\-info\-structure -can be created -by calling _UPT_create(), -passing the pid of the target process -as the only argument. The returned void\-pointer then needs to be -passed as the ``argument\&'' pointer (third argument) to -unw_init_remote(). +the callback routines will be +linked into the application, even if they are never actually called. .PP The _UPT_resume() -routine can be used to resume execution of -the target process. It simply invokes ptrace(2) -with a command -value of PTRACE_CONT\&. +routine can be used to resume execution of the target +process. It simply invokes ptrace(2) +with a command value of +PTRACE_CONT\&. .PP When the application is done using libunwind -on the target -process, _UPT_destroy() -needs to be called, passing it the -void\-pointer that was returned by the corresponding call to -_UPT_create(). -This ensures that all memory and other -resources are freed up. +on the target process, +_UPT_destroy() +needs to be called, passing it the opaque pointer that +was returned by the call to _UPT_create(). +This ensures that all +memory and other resources are freed up. .PP .SH AVAILABILITY .PP Since ptrace(2) -works within a single machine only, the -_UPT\-facility -by definition is not available in -libunwind\-versions -configured for cross\-unwinding. +works within a single machine only, the libunwind ptrace +remote by definition is not available in libunwind +versions configured +for cross\-unwinding. .PP .SH THREAD SAFETY .PP -The _UPT\-facility -assumes that a single _UPT\-info -structure is never shared between threads. Because of this, no -explicit locking is used. As long as only one thread uses -a _UPT\-info -structure at any given time, this facility -is thread\-safe. +The libunwind +ptrace remote assumes that a single UPT info structure is +never shared between threads. Because of this, no explicit locking is used. As +long as only one thread uses a UPT info structure at any given time, this +facility is thread\-safe. .PP .SH RETURN VALUE .PP _UPT_create() may return a NULL -pointer if it fails -to create the _UPT\-info\-structure -for any reason. For the -current implementation, the only reason this call may fail is when the -system is out of memory. +pointer if it fails to create +the UPT info structure for any reason. For the current implementation, the only +reason this call may fail is when the system is out of memory. .PP .SH FILES .PP .TP libunwind\-ptrace.h - Headerfile to include when using the + Header file to include when using the interface defined by this library. .TP \fB\-l\fPunwind\-ptrace \fB\-l\fPunwind\-generic - Linker\-switches to add when building a program that uses the + Linker switches to add when building a program that uses the functions defined by this library. .PP +.SH EXAMPLE + +.Vb + #include + #include + #include + + int + main (int argc, char **argv) + { + if (argc != 2) { + fprintf (stderr, "usage: %s PID\\n", argv[0]); + exit (EXIT_FAILURE); + } + + char *endptr; + pid_t target_pid = strtoul (argv[1], &endptr, 10); + if (target_pid == 0 && argv[1] == endptr) { + fprintf (stderr, "usage: %s PID\\n", argv[0]); + exit (EXIT_FAILURE); + } + + unw_addr_space_t as = unw_create_addr_space (&_UPT_accessors, 0); + if (!as) { + fprintf (stderr, "unw_create_addr_space() failed"); + exit (EXIT_FAILURE); + } + + void *ui = _UPT_create (target_pid); + if (!ui) { + fprintf (stderr, "_UPT_create() failed"); + exit (EXIT_FAILURE); + } + + unw_cursor_t cursor; + int ret = unw_init_remote (&cursor, as, ui); + if (ret < 0) { + fprintf (stderr, "unw_init_remote() failed: ret=%d\\n", ret); + exit (EXIT_FAILURE); + } + + do { + unw_proc_info_t pi; + ret = unw_get_proc_info (&cursor, &pi); + if (ret == \-UNW_ENOINFO) { + fprintf (stdout, "no info\\n"); + } else if (ret >= 0) { + printf ("\\tproc=%#016lx\-%#016lx\\thandler=%#016lx lsda=%#016lx", + (long) pi.start_ip, (long) pi.end_ip, + (long) pi.handler, (long) pi.lsda); + } + ret = unw_step (&cursor); + } while (ret > 0); + if (ret < 0) { + fprintf (stderr, "unwind failed with ret=%d\\n", ret); + exit (EXIT_FAILURE); + } + + _UPT_destroy (ui); + unw_destroy_addr_space (as); + exit (EXIT_SUCCESS); + } +.Ve +.PP .SH SEE ALSO .PP -execve(2), -libunwind(3), -ptrace(2) +execve(2), +libunwind(3libunwind), +ptrace(2) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/libunwind-ptrace.tex libunwind-1.8.1/doc/libunwind-ptrace.tex --- libunwind-1.7.2/doc/libunwind-ptrace.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-ptrace.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{libunwind-ptrace}{David Mosberger-Tang}{Programming Library}{ptrace() support in libunwind}libunwind-ptrace -- ptrace() support in libunwind +\begin{Name}{3libunwind}{libunwind-ptrace}{David Mosberger-Tang}{Programming Library}{ptrace() support in \Prog{libunwind}libunwind-ptrace -- ptrace() support in \Prog{libunwind} \end{Name} \section{Synopsis} @@ -17,111 +17,178 @@ \Type{void~*}\Func{\_UPT\_create}(\Type{pid\_t});\\ \noindent -\Type{void} \Func{\_UPT\_destroy}(\Type{void~*});\\ +\Type{void}~\Func{\_UPT\_destroy}(\Type{void~*});\\ \noindent -\Type{int} \Func{\_UPT\_find\_proc\_info}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{unw\_proc\_info\_t~*}, \Type{int}, \Type{void~*});\\ +\Type{int}~\Func{\_UPT\_find\_proc\_info}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{unw\_proc\_info\_t~*}, \Type{int}, \Type{void~*});\\ \noindent -\Type{void} \Func{\_UPT\_put\_unwind\_info}(\Type{unw\_addr\_space\_t}, \Type{unw\_proc\_info\_t~*}, \Type{void~*});\\ +\Type{void}~\Func{\_UPT\_put\_unwind\_info}(\Type{unw\_addr\_space\_t}, \Type{unw\_proc\_info\_t~*}, \Type{void~*});\\ \noindent -\Type{int} \Func{\_UPT\_get\_dyn\_info\_list\_addr}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t~*}, \Type{void~*});\\ +\Type{int}~\Func{\_UPT\_get\_dyn\_info\_list\_addr}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t~*}, \Type{void~*});\\ \noindent -\Type{int} \Func{\_UPT\_access\_mem}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{unw\_word\_t~*}, \Type{int}, \Type{void~*});\\ +\Type{int}~\Func{\_UPT\_access\_mem}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{unw\_word\_t~*}, \Type{int}, \Type{void~*});\\ \noindent -\Type{int} \Func{\_UPT\_access\_reg}(\Type{unw\_addr\_space\_t}, \Type{unw\_regnum\_t}, \Type{unw\_word\_t~*}, \Type{int}, \Type{void~*});\\ +\Type{int}~\Func{\_UPT\_access\_reg}(\Type{unw\_addr\_space\_t}, \Type{unw\_regnum\_t}, \Type{unw\_word\_t~*}, \Type{int}, \Type{void~*});\\ \noindent -\Type{int} \Func{\_UPT\_access\_fpreg}(\Type{unw\_addr\_space\_t}, \Type{unw\_regnum\_t}, \Type{unw\_fpreg\_t~*}, \Type{int}, \Type{void~*});\\ +\Type{int}~\Func{\_UPT\_access\_fpreg}(\Type{unw\_addr\_space\_t}, \Type{unw\_regnum\_t}, \Type{unw\_fpreg\_t~*}, \Type{int}, \Type{void~*});\\ \noindent -\Type{int} \Func{\_UPT\_get\_proc\_name}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{char~*}, \Type{size\_t}, \Type{unw\_word\_t~*}, \Type{void~*});\\ +\Type{int}~\Func{\_UPT\_get\_proc\_name}(\Type{unw\_addr\_space\_t}, \Type{unw\_word\_t}, \Type{char~*}, \Type{size\_t}, \Type{unw\_word\_t~*}, \Type{void~*});\\ \noindent -\Type{int} \Func{\_UPT\_resume}(\Type{unw\_addr\_space\_t}, \Type{unw\_cursor\_t~*}, \Type{void~*});\\ +\Type{int}~\Func{\_UPT\_resume}(\Type{unw\_addr\_space\_t}, \Type{unw\_cursor\_t~*}, \Type{void~*});\\ \section{Description} -The \Func{ptrace}(2) system-call makes it possible for a process to -gain access to the machine-state and virtual memory of \emph{another} -process. With the right set of call-back routines, it is therefore +The \Func{ptrace}(2) system call makes it possible for a process to +gain access to the machine state and virtual memory of \emph{another} +process. With the right set of callback routines, it is therefore possible to hook up \Prog{libunwind} to another process via \Func{ptrace}(2). While it's not very difficult to do so directly, \Prog{libunwind} further facilitates this task by providing ready-to-use callbacks for this purpose. The routines and variables -implementing this facility use a name-prefix of \Func{\_UPT}, which is -stands for ``unwind-via-ptrace''. +implementing this facility use a name prefix of \Func{\_UPT}, which is +stands for ``unwind via ptrace''. -An application that wants to use the \Func{\_UPT}-facility first needs -to create a new \Prog{libunwind} address-space that represents the -target process. This is done by calling -\Func{unw\_create\_addr\_space}(). In many cases, the application -will simply want to pass the address of \Var{\_UPT\_accessors} as the -first argument to this routine. Doing so will ensure that -\Prog{libunwind} will be able to properly unwind the target process. -However, in special circumstances, an application may prefer to use -only portions of the \Prog{\_UPT}-facility. For this reason, the -individual callback routines (\Func{\_UPT\_find\_proc\_info}(), -\Func{\_UPT\_put\_unwind\_info}(), etc.) are also available for direct -use. Of course, the addresses of these routines could also be picked -up from \Var{\_UPT\_accessors}, but doing so would prevent static -initialization. Also, when using \Var{\_UPT\_accessors}, \emph{all} -the callback routines will be linked into the application, even if -they are never actually called. - -Next, the application can turn on ptrace-mode on the target process, -either by forking a new process, invoking \Const{PTRACE\_TRACEME}, and -then starting the target program (via \Func{execve}(2)), or by -directly attaching to an already running process (via -\Const{PTRACE\_ATTACH}). Either way, once the process-ID (pid) of the -target process is known, a \Prog{\_UPT}-info-structure can be created -by calling \Func{\_UPT\_create}(), passing the pid of the target process -as the only argument. The returned void-pointer then needs to be -passed as the ``argument'' pointer (third argument) to -\Func{unw\_init\_remote}(). - -The \Func{\_UPT\_resume}() routine can be used to resume execution of -the target process. It simply invokes \Func{ptrace}(2) with a command -value of \Const{PTRACE\_CONT}. - -When the application is done using \Prog{libunwind} on the target -process, \Func{\_UPT\_destroy}() needs to be called, passing it the -void-pointer that was returned by the corresponding call to -\Func{\_UPT\_create}(). This ensures that all memory and other -resources are freed up. +An application that wants to use the \Prog{libunwind} ptrace remote needs to +take the folowing steps. +\begin{enumerate} + + \item Create a new \Prog{libunwind} address space that represents the target + process. This is done by calling \Func{unw\_create\_addr\_space}(). In + many cases, the application will simply want to pass the address of + \Var{\_UPT\_accessors} as the first argument to this routine. Doing so + will ensure that \Prog{libunwind} will be able to properly unwind the + target process. + + \item Turn on ptrace mode on the target process, either by forking a new + process, invoking \Const{PTRACE\_TRACEME}, and then starting the target + program (via \Func{execve}(2)), or by directly attaching to an already + running process (via \Const{PTRACE\_ATTACH}). + + \item Once the process-ID (pid) of the target process is known, a + UPT info structure can be created by calling + \Func{\_UPT\_create}(), passing the pid of the target process as the + only argument. + + \item The opaque pointer returned then needs to be passed as the + ``argument'' pointer (third argument) to \Func{unw\_init\_remote}(). + +\end{enumerate} + +In special circumstances, an application may prefer to use only +portions of the \Prog{libunwind} ptrace remote. For this reason, the individual +callback routines (\Func{\_UPT\_find\_proc\_info}(), +\Func{\_UPT\_put\_unwind\_info}(), etc.) are also available for direct use. Of +course, the addresses of these routines could also be picked up from +\Var{\_UPT\_accessors}, but doing so would prevent static initialization. Also, +when using \Var{\_UPT\_accessors}, \emph{all} the callback routines will be +linked into the application, even if they are never actually called. + +The \Func{\_UPT\_resume}() routine can be used to resume execution of the target +process. It simply invokes \Func{ptrace}(2) with a command value of +\Const{PTRACE\_CONT}. + +When the application is done using \Prog{libunwind} on the target process, +\Func{\_UPT\_destroy}() needs to be called, passing it the opaque pointer that +was returned by the call to \Func{\_UPT\_create}(). This ensures that all +memory and other resources are freed up. \section{Availability} -Since \Func{ptrace}(2) works within a single machine only, the -\Prog{\_UPT}-facility by definition is not available in -\Prog{libunwind}-versions configured for cross-unwinding. +Since \Func{ptrace}(2) works within a single machine only, the libunwind ptrace +remote by definition is not available in \Prog{libunwind} versions configured +for cross-unwinding. \section{Thread Safety} -The \Prog{\_UPT}-facility assumes that a single \Prog{\_UPT}-info -structure is never shared between threads. Because of this, no -explicit locking is used. As long as only one thread uses -a \Prog{\_UPT}-info structure at any given time, this facility -is thread-safe. +The \Prog{libunwind} ptrace remote assumes that a single UPT info structure is +never shared between threads. Because of this, no explicit locking is used. As +long as only one thread uses a UPT info structure at any given time, this +facility is thread-safe. \section{Return Value} -\Func{\_UPT\_create}() may return a \Const{NULL} pointer if it fails -to create the \Prog{\_UPT}-info-structure for any reason. For the -current implementation, the only reason this call may fail is when the -system is out of memory. +\Func{\_UPT\_create}() may return a \Const{NULL} pointer if it fails to create +the UPT info structure for any reason. For the current implementation, the only +reason this call may fail is when the system is out of memory. \section{Files} \begin{Description} -\item[\File{libunwind-ptrace.h}] Headerfile to include when using the - interface defined by this library. +\item[\File{libunwind-ptrace.h}] Header file to include when using the + interface defined by this library. \item[\Opt{-l}\File{unwind-ptrace} \Opt{-l}\File{unwind-generic}] - Linker-switches to add when building a program that uses the + Linker switches to add when building a program that uses the functions defined by this library. \end{Description} +\section{Example} +\begin{verbatim} + #include + #include + #include + + int + main (int argc, char **argv) + { + if (argc != 2) { + fprintf (stderr, "usage: %s PID\n", argv[0]); + exit (EXIT_FAILURE); + } + + char *endptr; + pid_t target_pid = strtoul (argv[1], &endptr, 10); + if (target_pid == 0 && argv[1] == endptr) { + fprintf (stderr, "usage: %s PID\n", argv[0]); + exit (EXIT_FAILURE); + } + + unw_addr_space_t as = unw_create_addr_space (&_UPT_accessors, 0); + if (!as) { + fprintf (stderr, "unw_create_addr_space() failed"); + exit (EXIT_FAILURE); + } + + void *ui = _UPT_create (target_pid); + if (!ui) { + fprintf (stderr, "_UPT_create() failed"); + exit (EXIT_FAILURE); + } + + unw_cursor_t cursor; + int ret = unw_init_remote (&cursor, as, ui); + if (ret < 0) { + fprintf (stderr, "unw_init_remote() failed: ret=%d\n", ret); + exit (EXIT_FAILURE); + } + + do { + unw_proc_info_t pi; + ret = unw_get_proc_info (&cursor, &pi); + if (ret == -UNW_ENOINFO) { + fprintf (stdout, "no info\n"); + } else if (ret >= 0) { + printf ("\tproc=%#016lx-%#016lx\thandler=%#016lx lsda=%#016lx", + (long) pi.start_ip, (long) pi.end_ip, + (long) pi.handler, (long) pi.lsda); + } + ret = unw_step (&cursor); + } while (ret > 0); + if (ret < 0) { + fprintf (stderr, "unwind failed with ret=%d\n", ret); + exit (EXIT_FAILURE); + } + + _UPT_destroy (ui); + unw_destroy_addr_space (as); + exit (EXIT_SUCCESS); + } +\end{verbatim} + \section{See Also} -execve(2), -\SeeAlso{libunwind(3)}, -ptrace(2) +\SeeAlso{execve}(2), +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{ptrace}(2) \section{Author} diff -Nru libunwind-1.7.2/doc/libunwind-setjmp.man libunwind-1.8.1/doc/libunwind-setjmp.man --- libunwind-1.7.2/doc/libunwind-setjmp.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-setjmp.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:44 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 10:53:41 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "LIBUNWIND\-SETJMP" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "LIBUNWIND\-SETJMP" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME libunwind\-setjmp \-\- libunwind\-based non\-local gotos @@ -115,11 +117,13 @@ .PP .SH SEE ALSO -.PP -libunwind(3), -setjmp(3), longjmp(3), -_setjmp(3), _longjmp(3), -sigsetjmp(3), siglongjmp(3) +libunwind(3libunwind), +setjmp(3), +longjmp(3), +_setjmp(3), +_longjmp(3), +sigsetjmp(3), +siglongjmp(3) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/libunwind-setjmp.tex libunwind-1.8.1/doc/libunwind-setjmp.tex --- libunwind-1.7.2/doc/libunwind-setjmp.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind-setjmp.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{libunwind-setjmp}{David Mosberger-Tang}{Programming Library}{libunwind-based non-local gotos}libunwind-setjmp -- libunwind-based non-local gotos +\begin{Name}{3libunwind}{libunwind-setjmp}{David Mosberger-Tang}{Programming Library}{libunwind-based non-local gotos}libunwind-setjmp -- libunwind-based non-local gotos \end{Name} \section{Synopsis} @@ -70,11 +70,10 @@ \section{See Also} - -\SeeAlso{libunwind(3)}, -setjmp(3), longjmp(3), -\_setjmp(3), \_longjmp(3), -sigsetjmp(3), siglongjmp(3) +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{setjmp}(3), \SeeAlso{longjmp}(3), +\SeeAlso{\_setjmp}(3), \SeeAlso{\_longjmp}(3), +\SeeAlso{sigsetjmp}(3), \SeeAlso{siglongjmp}(3) \section{Author} diff -Nru libunwind-1.7.2/doc/libunwind.man libunwind-1.8.1/doc/libunwind.man --- libunwind-1.7.2/doc/libunwind.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Sun Aug 29 23:45:06 CEST 2021 +.\" Manual page created with latex2man on Tue Aug 29 11:06:25 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "LIBUNWIND" "3" "29 August 2021" "Programming Library " "Programming Library " +.TH "LIBUNWIND" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME libunwind \-\- a (mostly) platform\-independent unwind API @@ -129,7 +131,7 @@ you want to unwind the stack while executing in some function F(). In this function, you would call unw_getcontext() -to get a snapshot of the CPU registers (machine\-state). Then you +to get a snapshot of the CPU registers (machine state). Then you initialize an \fIunwind cursor\fP based on this snapshot. This is done with a call to unw_init_local(). @@ -140,7 +142,7 @@ be moved ``up\&'' (towards earlier stack frames) by calling unw_step(). By repeatedly calling this routine, you can -uncover the entire call\-chain that led to the activation of function +uncover the entire call chain that led to the activation of function F(). A positive return value from unw_step() indicates @@ -166,7 +168,7 @@ to curr whenever that is necessary. In the most extreme case, a program could maintain a separate cursor for each call -frame and that way it could move up and down the callframe\-chain at +frame and that way it could move up and down the callframe chain at will. .PP Given an unwind cursor, it is possible to read and write the CPU @@ -226,14 +228,14 @@ It is perfectly OK for a single program to employ both local\-only and generic unwinding. That is, whether or not UNW_LOCAL_ONLY -is defined is a choice that each source\-file -(compilation\-unit) can make on its own. Independent of the setting(s) +is defined is a choice that each source file +(compilation unit) can make on its own. Independent of the setting(s) of UNW_LOCAL_ONLY, you\&'ll always link the same library into the program (normally \fB\-l\fPunwind). Furthermore, the portion of libunwind -that manages unwind\-info for dynamically +that manages unwind info for dynamically generated code is not affected by the setting of UNW_LOCAL_ONLY\&. .PP @@ -272,12 +274,12 @@ used by debuggers and instruction\-set simulators, for example. .PP Before you can unwind a remote process, you need to create a new -address\-space object for that process. This is achieved with the +address space object for that process. This is achieved with the unw_create_addr_space() routine. The routine takes two arguments: a pointer to a set of \fIaccessor\fP routines and an -integer that specifies the byte\-order of the target process. The +integer that specifies the byte order of the target process. The accessor routines provide libunwind with the means to communicate with the remote process. In particular, there are @@ -288,7 +290,7 @@ to unw_init_remote(). This routine is very similar to unw_init_local(), -except that it takes an address\-space +except that it takes an address space object and an opaque pointer as arguments. The routine uses these arguments to fetch the initial machine state. Libunwind never @@ -299,7 +301,7 @@ Once a cursor has been initialized with unw_init_remote(), unwinding works exactly like in the local case. That is, you can use unw_step() -to move ``up\&'' in the call\-chain, read and write +to move ``up\&'' in the call chain, read and write registers, or resume execution at a particular stack frame by calling unw_resume\&. .PP @@ -362,7 +364,7 @@ However, any given cursor may be accessed by only one thread at any given time. .PP -To ensure thread\-safety, some libunwind +To ensure thread safety, some libunwind routines may have to use locking. Such routines \fImust not\fP be called from signal @@ -374,7 +376,7 @@ unwinding is signal\-safe (e.g., unw_step() for local unwinding is -signal\-safe). For remote\-unwinding, \fInone\fP +signal\-safe). For remote unwinding, \fInone\fP of the libunwind routines are guaranteed to be signal\-safe. @@ -396,15 +398,15 @@ .PP The interface for registering and canceling dynamic unwind info has been designed for maximum efficiency, so as to minimize the -performance impact on JIT\-compilers. In particular, both routines are +performance impact on JIT compilers. In particular, both routines are guaranteed to execute in ``constant time\&'' (O(1)) and the -data\-structure encapsulating the dynamic unwind info has been designed +data structure encapsulating the dynamic unwind info has been designed to facilitate sharing, such that similar procedures can share much of the underlying information. .PP For more information on the libunwind support for dynamically -generated code, see libunwind\-dynamic(3)\&. +generated code, see libunwind\-dynamic(3libunwind). .PP .SH CACHING OF UNWIND INFO @@ -417,7 +419,7 @@ stale data. For example, this would happen if libunwind were to cache information about a shared library which later on gets -unloaded (e.g., via \fIdlclose\fP(3)). +unloaded (e.g., via \fIdlclose\fP(3libunwind)). .PP To prevent the risk of using stale data, libunwind provides two @@ -428,7 +430,7 @@ The second facility is provided by unw_set_caching_policy(), which lets a program -select the exact caching policy in use for a given address\-space +select the exact caching policy in use for a given address space object. In particular, by selecting the policy UNW_CACHE_NONE, it is possible to turn off caching @@ -455,11 +457,11 @@ included. .TP \fB\-l\fPunwind - Linker\-switch to add when building a + Linker switch to add when building a program that does native (same platform) unwinding. .TP \fB\-l\fPunwind\-PLAT - Linker\-switch to add when + Linker switch to add when building a program that unwinds a program on platform PLAT\&. For example, to (cross\-)unwind an IA\-64 program, the linker switch \-lunwind\-ia64 @@ -470,33 +472,33 @@ .SH SEE ALSO .PP -libunwind\-dynamic(3), -libunwind\-ia64(3), -libunwind\-ptrace(3), -libunwind\-setjmp(3), -unw_create_addr_space(3), -unw_destroy_addr_space(3), -unw_flush_cache(3), -unw_get_accessors(3), -unw_get_fpreg(3), -unw_get_proc_info(3), -unw_get_proc_name(3), -unw_get_reg(3), -unw_getcontext(3), -unw_init_local(3), -unw_init_remote(3), -unw_is_fpreg(3), -unw_is_signal_frame(3), -unw_regname(3), -unw_resume(3), -unw_set_caching_policy(3), -unw_set_cache_size(3), -unw_set_fpreg(3), -unw_set_reg(3), -unw_step(3), -unw_strerror(3), -_U_dyn_register(3), -_U_dyn_cancel(3) +libunwind\-dynamic(3libunwind), +libunwind\-ia64(3libunwind), +libunwind\-ptrace(3libunwind), +libunwind\-setjmp(3libunwind), +unw_create_addr_space(3libunwind), +unw_destroy_addr_space(3libunwind), +unw_flush_cache(3libunwind), +unw_get_accessors(3libunwind), +unw_get_fpreg(3libunwind), +unw_get_proc_info(3libunwind), +unw_get_proc_name(3libunwind), +unw_get_reg(3libunwind), +unw_getcontext(3libunwind), +unw_init_local(3libunwind), +unw_init_remote(3libunwind), +unw_is_fpreg(3libunwind), +unw_is_signal_frame(3libunwind), +unw_regname(3libunwind), +unw_resume(3libunwind), +unw_set_caching_policy(3libunwind), +unw_set_cache_size(3libunwind), +unw_set_fpreg(3libunwind), +unw_set_reg(3libunwind), +unw_step(3libunwind), +unw_strerror(3libunwind), +_U_dyn_register(3libunwind), +_U_dyn_cancel(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/libunwind.tex libunwind-1.8.1/doc/libunwind.tex --- libunwind-1.7.2/doc/libunwind.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/libunwind.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{libunwind}{David Mosberger-Tang}{Programming Library}{Introduction to libunwind}libunwind -- a (mostly) platform-independent unwind API +\begin{Name}{3libunwind}{libunwind}{David Mosberger-Tang}{Programming Library}{Introduction to libunwind}libunwind -- a (mostly) platform-independent unwind API \end{Name} \section{Synopsis} @@ -69,14 +69,14 @@ within a running program. This is called \emph{local} unwinding. Say you want to unwind the stack while executing in some function \Func{F}(). In this function, you would call \Func{unw\_getcontext}() -to get a snapshot of the CPU registers (machine-state). Then you +to get a snapshot of the CPU registers (machine state). Then you initialize an \emph{unwind~cursor} based on this snapshot. This is done with a call to \Func{unw\_init\_local}(). The cursor now points to the current frame, that is, the stack frame that corresponds to the current activation of function \Func{F}(). The unwind cursor can then be moved ``up'' (towards earlier stack frames) by calling \Func{unw\_step}(). By repeatedly calling this routine, you can -uncover the entire call-chain that led to the activation of function +uncover the entire call chain that led to the activation of function \Func{F}(). A positive return value from \Func{unw\_step}() indicates that there are more frames in the chain, zero indicates that the end of the chain has been reached, and any negative value indicates that @@ -93,7 +93,7 @@ approach, the program could move one step ``down'' simply by copying back \Var{prev} to \Var{curr} whenever that is necessary. In the most extreme case, a program could maintain a separate cursor for each call -frame and that way it could move up and down the callframe-chain at +frame and that way it could move up and down the callframe chain at will. Given an unwind cursor, it is possible to read and write the CPU @@ -135,11 +135,11 @@ \Const{UNW\_LOCAL\_ONLY} before including the headerfile \File{$<$libunwind.h$>$}. It is perfectly OK for a single program to employ both local-only and generic unwinding. That is, whether or not -\Const{UNW\_LOCAL\_ONLY} is defined is a choice that each source-file -(compilation-unit) can make on its own. Independent of the setting(s) +\Const{UNW\_LOCAL\_ONLY} is defined is a choice that each source file +(compilation unit) can make on its own. Independent of the setting(s) of \Const{UNW\_LOCAL\_ONLY}, you'll always link the same library into the program (normally \Opt{-l}\File{unwind}). Furthermore, the -portion of \Prog{libunwind} that manages unwind-info for dynamically +portion of \Prog{libunwind} that manages unwind info for dynamically generated code is not affected by the setting of \Const{UNW\_LOCAL\_ONLY}. @@ -175,10 +175,10 @@ used by debuggers and instruction-set simulators, for example. Before you can unwind a remote process, you need to create a new -address-space object for that process. This is achieved with the +address space object for that process. This is achieved with the \Func{unw\_create\_addr\_space}() routine. The routine takes two arguments: a pointer to a set of \emph{accessor} routines and an -integer that specifies the byte-order of the target process. The +integer that specifies the byte order of the target process. The accessor routines provide \Func{libunwind} with the means to communicate with the remote process. In particular, there are callbacks to read and write the process's memory, its registers, and @@ -186,7 +186,7 @@ With the address space created, unwinding can be initiated by a call to \Func{unw\_init\_remote}(). This routine is very similar to -\Func{unw\_init\_local}(), except that it takes an address-space +\Func{unw\_init\_local}(), except that it takes an address space object and an opaque pointer as arguments. The routine uses these arguments to fetch the initial machine state. \Prog{Libunwind} never uses the opaque pointer on its own, but instead just passes it on to @@ -195,7 +195,7 @@ Once a cursor has been initialized with \Func{unw\_init\_remote}(), unwinding works exactly like in the local case. That is, you can use -\Func{unw\_step}() to move ``up'' in the call-chain, read and write +\Func{unw\_step}() to move ``up'' in the call chain, read and write registers, or resume execution at a particular stack frame by calling \Func{unw\_resume}. @@ -242,14 +242,14 @@ However, any given cursor may be accessed by only one thread at any given time. -To ensure thread-safety, some \Prog{libunwind} routines may have to +To ensure thread safety, some \Prog{libunwind} routines may have to use locking. Such routines \emph{must~not} be called from signal handlers (directly or indirectly) and are therefore \emph{not} signal-safe. The manual page for each \Prog{libunwind} routine identifies whether or not it is signal-safe, but as a general rule, any routine that may be needed for \emph{local} unwinding is signal-safe (e.g., \Func{unw\_step}() for local unwinding is -signal-safe). For remote-unwinding, \emph{none} of the +signal-safe). For remote unwinding, \emph{none} of the \Prog{libunwind} routines are guaranteed to be signal-safe. @@ -265,14 +265,14 @@ The interface for registering and canceling dynamic unwind info has been designed for maximum efficiency, so as to minimize the -performance impact on JIT-compilers. In particular, both routines are +performance impact on JIT compilers. In particular, both routines are guaranteed to execute in ``constant time'' (O(1)) and the -data-structure encapsulating the dynamic unwind info has been designed +data structure encapsulating the dynamic unwind info has been designed to facilitate sharing, such that similar procedures can share much of the underlying information. For more information on the \Prog{libunwind} support for dynamically -generated code, see \SeeAlso{libunwind-dynamic(3)}. +generated code, see \SeeAlso{libunwind-dynamic}(3libunwind). \section{Caching of Unwind Info} @@ -282,7 +282,7 @@ during its lifetime, this creates a risk of \Prog{libunwind} using stale data. For example, this would happen if \Prog{libunwind} were to cache information about a shared library which later on gets -unloaded (e.g., via \Cmd{dlclose}{3}). +unloaded (e.g., via \Cmd{dlclose}{3libunwind}). To prevent the risk of using stale data, \Prog{libunwind} provides two facilities: first, it is possible to flush the cached information @@ -290,7 +290,7 @@ entire address space, if desired). This functionality is provided by \Func{unw\_flush\_cache}(). The second facility is provided by \Func{unw\_set\_caching\_policy}(), which lets a program -select the exact caching policy in use for a given address-space +select the exact caching policy in use for a given address space object. In particular, by selecting the policy \Const{UNW\_CACHE\_NONE}, it is possible to turn off caching completely, therefore eliminating the risk of stale data altogether @@ -308,9 +308,9 @@ the unwind target runs on platform \Var{PLAT}. For example, to unwind an IA-64 program, the header file \File{libunwind-ia64.h} should be included. -\item[\Opt{-l}\File{unwind}] Linker-switch to add when building a +\item[\Opt{-l}\File{unwind}] Linker switch to add when building a program that does native (same platform) unwinding. -\item[\Opt{-l}\File{unwind-}\Var{PLAT}] Linker-switch to add when +\item[\Opt{-l}\File{unwind-}\Var{PLAT}] Linker switch to add when building a program that unwinds a program on platform \Var{PLAT}. For example, to (cross-)unwind an IA-64 program, the linker switch \File{-lunwind-ia64} should be added. Note: multiple such switches @@ -320,33 +320,33 @@ \section{See Also} -\SeeAlso{libunwind-dynamic(3)}, -\SeeAlso{libunwind-ia64(3)}, -\SeeAlso{libunwind-ptrace(3)}, -\SeeAlso{libunwind-setjmp(3)}, -\SeeAlso{unw\_create\_addr\_space(3)}, -\SeeAlso{unw\_destroy\_addr\_space(3)}, -\SeeAlso{unw\_flush\_cache(3)}, -\SeeAlso{unw\_get\_accessors(3)}, -\SeeAlso{unw\_get\_fpreg(3)}, -\SeeAlso{unw\_get\_proc\_info(3)}, -\SeeAlso{unw\_get\_proc\_name(3)}, -\SeeAlso{unw\_get\_reg(3)}, -\SeeAlso{unw\_getcontext(3)}, -\SeeAlso{unw\_init\_local(3)}, -\SeeAlso{unw\_init\_remote(3)}, -\SeeAlso{unw\_is\_fpreg(3)}, -\SeeAlso{unw\_is\_signal\_frame(3)}, -\SeeAlso{unw\_regname(3)}, -\SeeAlso{unw\_resume(3)}, -\SeeAlso{unw\_set\_caching\_policy(3)}, -\SeeAlso{unw\_set\_cache\_size(3)}, -\SeeAlso{unw\_set\_fpreg(3)}, -\SeeAlso{unw\_set\_reg(3)}, -\SeeAlso{unw\_step(3)}, -\SeeAlso{unw\_strerror(3)}, -\SeeAlso{\_U\_dyn\_register(3)}, -\SeeAlso{\_U\_dyn\_cancel(3)} +\SeeAlso{libunwind-dynamic}(3libunwind), +\SeeAlso{libunwind-ia64}(3libunwind), +\SeeAlso{libunwind-ptrace}(3libunwind), +\SeeAlso{libunwind-setjmp}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{unw\_destroy\_addr\_space}(3libunwind), +\SeeAlso{unw\_flush\_cache}(3libunwind), +\SeeAlso{unw\_get\_accessors}(3libunwind), +\SeeAlso{unw\_get\_fpreg}(3libunwind), +\SeeAlso{unw\_get\_proc\_info}(3libunwind), +\SeeAlso{unw\_get\_proc\_name}(3libunwind), +\SeeAlso{unw\_get\_reg}(3libunwind), +\SeeAlso{unw\_getcontext}(3libunwind), +\SeeAlso{unw\_init\_local}(3libunwind), +\SeeAlso{unw\_init\_remote}(3libunwind), +\SeeAlso{unw\_is\_fpreg}(3libunwind), +\SeeAlso{unw\_is\_signal\_frame}(3libunwind), +\SeeAlso{unw\_regname}(3libunwind), +\SeeAlso{unw\_resume}(3libunwind), +\SeeAlso{unw\_set\_caching\_policy}(3libunwind), +\SeeAlso{unw\_set\_cache\_size}(3libunwind), +\SeeAlso{unw\_set\_fpreg}(3libunwind), +\SeeAlso{unw\_set\_reg}(3libunwind), +\SeeAlso{unw\_step}(3libunwind), +\SeeAlso{unw\_strerror}(3libunwind), +\SeeAlso{\_U\_dyn\_register}(3libunwind), +\SeeAlso{\_U\_dyn\_cancel}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_apply_reg_state.man libunwind-1.8.1/doc/unw_apply_reg_state.man --- libunwind-1.7.2/doc/unw_apply_reg_state.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_apply_reg_state.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Wed Aug 16 11:09:44 PDT 2017 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_APPLY\\_REG\\_STATE" "3" "16 August 2017" "Programming Library " "Programming Library " +.TH "UNW\\_APPLY\\_REG\\_STATE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_apply_reg_state \-\- apply a register state update to a cursor @@ -39,16 +41,16 @@ .PP On successful completion, unw_apply_reg_state() returns 0. -Otherwise the negative value of one of the error\-codes below is +Otherwise the negative value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_apply_reg_state() -is thread\-safe. If cursor cp +is thread safe. If cursor cp is -in the local address\-space, this routine is also safe to use from a +in the local address space, this routine is also safe to use from a signal handler. .PP .SH ERRORS @@ -64,20 +66,20 @@ unwind\-info for the procedure. .TP UNW_EBADVERSION - The unwind\-info for the procedure has + The unwind info for the procedure has version or format that is not understood by libunwind\&. .PP In addition, unw_apply_reg_state() may return any error returned by the access_mem() call\-back (see -unw_create_addr_space(3)). +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -unw_reg_states_iterate(3) +libunwind(3libunwind), +unw_reg_states_iterate(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_apply_reg_state.tex libunwind-1.8.1/doc/unw_apply_reg_state.tex --- libunwind-1.7.2/doc/unw_apply_reg_state.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_apply_reg_state.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_apply\_reg\_state}{David Mosberger-Tang}{Programming Library}{unw\_apply\_reg\_state}unw\_apply\_reg\_state -- apply a register state update to a cursor +\begin{Name}{3libunwind}{unw\_apply\_reg\_state}{David Mosberger-Tang}{Programming Library}{unw\_apply\_reg\_state}unw\_apply\_reg\_state -- apply a register state update to a cursor \end{Name} \section{Synopsis} @@ -25,13 +25,13 @@ \section{Return Value} On successful completion, \Func{unw\_apply\_reg\_state}() returns 0. -Otherwise the negative value of one of the error-codes below is +Otherwise the negative value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_apply\_reg\_state}() is thread-safe. If cursor \Var{cp} is -in the local address-space, this routine is also safe to use from a +\Func{unw\_apply\_reg\_state}() is thread safe. If cursor \Var{cp} is +in the local address space, this routine is also safe to use from a signal handler. \section{Errors} @@ -40,17 +40,17 @@ \item[\Const{UNW\_EUNSPEC}] An unspecified error occurred. \item[\Const{UNW\_ENOINFO}] \Prog{Libunwind} was unable to locate unwind-info for the procedure. -\item[\Const{UNW\_EBADVERSION}] The unwind-info for the procedure has +\item[\Const{UNW\_EBADVERSION}] The unwind info for the procedure has version or format that is not understood by \Prog{libunwind}. \end{Description} In addition, \Func{unw\_apply\_reg\_state}() may return any error returned by the \Func{access\_mem}() call-back (see -\Func{unw\_create\_addr\_space}(3)). +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_reg\_states\_iterate(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_reg\_states\_iterate}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_backtrace.man libunwind-1.8.1/doc/unw_backtrace.man --- libunwind-1.7.2/doc/unw_backtrace.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_backtrace.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,7 +1,7 @@ .\" *********************************** start of \input{common.tex} .\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Jan 5 15:33:00 2023 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -12,7 +12,7 @@ .fi .. -.TH "UNW\\_BACKTRACE" "3" "05 January 2023" "Programming Library " "Programming Library " +.TH "UNW\\_BACKTRACE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_backtrace \-\- return backtrace for the calling program @@ -91,8 +91,8 @@ .SH SEE ALSO .PP -libunwind(3), -unw_step(3) +libunwind(3libunwind), +unw_step(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_backtrace.tex libunwind-1.8.1/doc/unw_backtrace.tex --- libunwind-1.7.2/doc/unw_backtrace.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_backtrace.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_backtrace}{David Mosberger-Tang}{Programming Library}{unw\_backtrace}unw\_backtrace -- return backtrace for the calling program +\begin{Name}{3libunwind}{unw\_backtrace}{David Mosberger-Tang}{Programming Library}{unw\_backtrace}unw\_backtrace -- return backtrace for the calling program \end{Name} \section{Synopsis} @@ -34,8 +34,8 @@ calling \Func{unw\_backtrace}(). In case you want to obtain the backtrace from a specific \Type{unw\_context\_t}, -you can call \Func{unw\_backtrace2} with that context passing \Const{0} for flag. -If the \Type{unw\_context_t} is known to be a signal frame (i.e., from the third argument +you can call \Func{unw\_backtrace2} with that context passing \Const{0} for flag. +If the \Type{unw\_context\_t} is known to be a signal frame (i.e., from the third argument in a sigaction handler on linux), \Func{unw\_backtrace2} can be used to collect only the frames before the signal frame passing the \Const{UNW\_INIT\_SIGNAL\_FRAME} flag. @@ -47,8 +47,8 @@ \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_step(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_step}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_create_addr_space.man libunwind-1.8.1/doc/unw_create_addr_space.man --- libunwind-1.7.2/doc/unw_create_addr_space.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_create_addr_space.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 10:53:41 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_CREATE\\_ADDR\\_SPACE" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_CREATE\\_ADDR\\_SPACE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_create_addr_space \-\- create address space for remote unwinding @@ -32,54 +34,54 @@ .PP The unw_create_addr_space() routine creates a new unwind -address\-space and initializes it based on the call\-back routines +address space and initializes it based on the callback routines passed via the ap pointer and the specified byteorder\&. -The call\-back routines are described in detail below. The +The callback routines are described in detail below. The byteorder -can be set to 0 to request the default byte\-order of -the unwind target. To request a particular byte\-order, +can be set to 0 to request the default byte order of +the unwind target. To request a particular byte order, byteorder can be set to any constant defined by \&. -In particular, __LITTLE_ENDIAN +In particular, UNW_LITTLE_ENDIAN would -request little\-endian byte\-order and __BIG_ENDIAN +request little\-endian byte order and UNW_BIG_ENDIAN would -request big\-endian byte\-order. Whether or not a particular byte\-order +request big\-endian byte order. Whether or not a particular byte order is supported depends on the target platform. .PP -.SH CALL\-BACK ROUTINES +.SH CALLBACK ROUTINES .PP Libunwind -uses a set of call\-back routines to access the -information it needs to unwind a chain of stack\-frames. These +uses a set of callback routines to access the +information it needs to unwind a chain of stack frames. These routines are specified via the ap argument, which points to a variable of type unw_accessors_t\&. The contents of this -variable is copied into the newly\-created address space, so the +variable is copied into the newly created address space, so the variable must remain valid only for the duration of the call to unw_create_addr_space(). .PP -The first argument to every call\-back routine is an address\-space +The first argument to every callback routine is an address space identifier (as) and the last argument is an arbitrary, -application\-specified void\-pointer (arg). +application specified void pointer (arg). When invoking a -call\-back routine, libunwind +callback routine, libunwind sets the as argument to the -address\-space on whose behalf the invocation is made and the arg +address space on whose behalf the invocation is made and the arg argument to the value that was specified when -unw_init_remote(3) +unw_init_remote(3libunwind) was called. .PP -The synopsis and a detailed description of every call\-back routine +The synopsis and a detailed description of every callback routine follows below. .PP -.SS CALL\-BACK ROUTINE SYNOPSIS +.SS CALLBACK ROUTINE SYNOPSIS .PP int find_proc_info(unw_addr_space_t @@ -169,19 +171,19 @@ .PP Libunwind invokes the find_proc_info() -call\-back to +callback to locate the information need to unwind a particular procedure. The ip -argument is an instruction\-address inside the procedure whose +argument is an instruction address inside the procedure whose information is needed. The pip argument is a pointer to the variable used to return the desired information. The type of this variable is unw_proc_info_t\&. See -unw_get_proc_info(3) +unw_get_proc_info(3libunwind) for details. Argument need_unwind_info -is zero if the call\-back does not need to +is zero if the callback does not need to provide values for the following members in the unw_proc_info_t structure: format, @@ -194,22 +196,22 @@ by the unwind_info member must remain valid until the info is released via the put_unwind_info -call\-back (see below). +callback (see below). .PP On successful completion, the find_proc_info() -call\-back must +callback must return zero. Otherwise, the negative value of one of the unw_error_t -error\-codes may be returned. In particular, this -call\-back may return \-UNW_ESTOPUNWIND +error codes may be returned. In particular, this +callback may return \-UNW_ESTOPUNWIND to signal the end of -the frame\-chain. +the frame chain. .PP .SS PUT_UNWIND_INFO .PP Libunwind invokes the put_unwind_info() -call\-back to +callback to release the resources (such as memory) allocated by a previous call to find_proc_info() with the need_unwind_info @@ -229,36 +231,36 @@ .PP Libunwind invokes the get_dyn_info_list_addr() -call\-back to obtain the address of the head of the dynamic unwind\-info +callback to obtain the address of the head of the dynamic unwind info registration list. The variable stored at the returned address must have a type of unw_dyn_info_list_t (see -_U_dyn_register(3)). +_U_dyn_register(3libunwind)). The dliap argument is a pointer to a variable of type unw_word_t which is used to return the -address of the dynamic unwind\-info registration list. If no dynamic -unwind\-info registration list exist, the value pointed to by +address of the dynamic unwind info registration list. If no dynamic +unwind info registration list exist, the value pointed to by dliap must be cleared to zero. Libunwind will cache the value returned by get_dyn_info_list_addr() if caching is -enabled for the given address\-space. The cache can be cleared with a +enabled for the given address space. The cache can be cleared with a call to unw_flush_cache(). .PP On successful completion, the get_dyn_info_list_addr() -call\-back must return zero. Otherwise, the negative value of one of +callback must return zero. Otherwise, the negative value of one of the unw_error_t -error\-codes may be returned. +error codes may be returned. .PP .SS ACCESS_MEM .PP Libunwind invokes the access_mem() -call\-back to read -from or write to a word of memory in the target address\-space. The +callback to read +from or write to a word of memory in the target address space. The address of the word to be accessed is passed in argument addr\&. To read memory, libunwind sets argument write @@ -272,21 +274,21 @@ to point to the word that contains the value to be written. The word that valp points to is always in the -byte\-order of the host\-platform, regardless of the byte\-order of the -target. In other words, it is the responsibility of the call\-back -routine to convert between the target\&'s and the host\&'s byte\-order, if +byte order of the host platform, regardless of the byte order of the +target. In other words, it is the responsibility of the callback +routine to convert between the target\&'s and the host\&'s byte order, if necessary. .PP On successful completion, the access_mem() -call\-back must return zero. Otherwise, the negative value of one of +callback must return zero. Otherwise, the negative value of one of the unw_error_t -error\-codes may be returned. +error codes may be returned. .PP .SS ACCESS_REG .PP Libunwind invokes the access_reg() -call\-back to read +callback to read from or write to a scalar (non\-floating\-point) CPU register. The index of the register to be accessed is passed in argument regnum\&. @@ -301,22 +303,22 @@ to a non\-zero value and valp to point to the word that contains the value to be written. The word that valp -points to is always in the byte\-order of the host\-platform, regardless -of the byte\-order of the target. In other words, it is the -responsibility of the call\-back routine to convert between the -target\&'s and the host\&'s byte\-order, if necessary. +points to is always in the byte order of the host platform, regardless +of the byte order of the target. In other words, it is the +responsibility of the callback routine to convert between the +target\&'s and the host\&'s byte order, if necessary. .PP On successful completion, the access_reg() -call\-back must +callback must return zero. Otherwise, the negative value of one of the unw_error_t -error\-codes may be returned. +error codes may be returned. .PP .SS ACCESS_FPREG .PP Libunwind invokes the access_fpreg() -call\-back to read +callback to read from or write to a floating\-point CPU register. The index of the register to be accessed is passed in argument regnum\&. To read a @@ -335,62 +337,62 @@ that contains the value to be written. The word that fpvalp points to is always in the -byte\-order of the host\-platform, regardless of the byte\-order of the -target. In other words, it is the responsibility of the call\-back -routine to convert between the target\&'s and the host\&'s byte\-order, if +byte order of the host platform, regardless of the byte order of the +target. In other words, it is the responsibility of the callback +routine to convert between the target\&'s and the host\&'s byte order, if necessary. .PP On successful completion, the access_fpreg() -call\-back must +callback must return zero. Otherwise, the negative value of one of the unw_error_t -error\-codes may be returned. +error codes may be returned. .PP .SS RESUME .PP Libunwind invokes the resume() -call\-back to resume +callback to resume execution in the target address space. Argument cp is the -unwind\-cursor that identifies the stack\-frame in which execution +unwind cursor that identifies the stack frame in which execution should resume. By the time libunwind invokes the resume -call\-back, it has already established the desired machine\- and -memory\-state via calls to the access_reg(), +callback, it has already established the desired machine and +memory state via calls to the access_reg(), access_fpreg, and access_mem() -call\-backs. Thus, all -the call\-back needs to do is perform whatever action is needed to +callbacks. Thus, all +the callback needs to do is perform whatever action is needed to actually resume execution. .PP The resume -call\-back is invoked only in response to a call to -unw_resume(3), +callback is invoked only in response to a call to +unw_resume(3libunwind), so applications which never invoke -unw_resume(3) +unw_resume(3libunwind) need not define the resume callback. .PP On successful completion, the resume() -call\-back must return +callback must return zero. Otherwise, the negative value of one of the unw_error_t -error\-codes may be returned. As a special case, -when resuming execution in the local address space, the call\-back will +error codes may be returned. As a special case, +when resuming execution in the local address space, the callback will not return on success. .PP .SS GET_PROC_NAME .PP Libunwind invokes the get_proc_name() -call\-back to -obtain the procedure\-name of a static (not dynamically generated) +callback to +obtain the procedure name of a static (not dynamically generated) procedure. Argument addr -is an instruction\-address within the +is an instruction address within the procedure whose name is to be obtained. The bufp argument is a -pointer to a character\-buffer used to return the procedure name. The +pointer to a character buffer used to return the procedure name. The size of this buffer is specified in argument buf_len\&. The returned name must be terminated by a NUL character. If the @@ -402,7 +404,7 @@ must be returned. Argument offp is a pointer to a word which is used to -return the byte\-offset relative to the start of the procedure whose +return the byte offset relative to the start of the procedure whose name is being returned. For example, if procedure foo() starts at address 0x40003000, then invoking get_proc_name() @@ -414,10 +416,10 @@ bytes long). .PP On successful completion, the get_proc_name() -call\-back must +callback must return zero. Otherwise, the negative value of one of the unw_error_t -error\-codes may be returned. +error codes may be returned. .PP .SH RETURN VALUE @@ -426,7 +428,7 @@ returns a non\-NULL value that represents the newly created -address\-space. Otherwise, NULL +address space. Otherwise, NULL is returned. .PP .SH THREAD AND SIGNAL SAFETY @@ -439,12 +441,12 @@ .SH SEE ALSO .PP -_U_dyn_register(3), -libunwind(3), -unw_destroy_addr_space(3), -unw_get_proc_info(3), -unw_init_remote(3), -unw_resume(3) +_U_dyn_register(3libunwind), +libunwind(3libunwind), +unw_destroy_addr_space(3libunwind), +unw_get_proc_info(3libunwind), +unw_init_remote(3libunwind), +unw_resume(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_create_addr_space.tex libunwind-1.8.1/doc/unw_create_addr_space.tex --- libunwind-1.7.2/doc/unw_create_addr_space.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_create_addr_space.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_create\_addr\_space}{David Mosberger-Tang}{Programming Library}{unw\_create\_addr\_space}unw\_create\_addr\_space -- create address space for remote unwinding +\begin{Name}{3libunwind}{unw\_create\_addr\_space}{David Mosberger-Tang}{Programming Library}{unw\_create\_addr\_space}unw\_create\_addr\_space -- create address space for remote unwinding \end{Name} \section{Synopsis} @@ -17,39 +17,39 @@ \section{Description} The \Func{unw\_create\_addr\_space}() routine creates a new unwind -address-space and initializes it based on the call-back routines +address space and initializes it based on the callback routines passed via the \Var{ap} pointer and the specified \Var{byteorder}. -The call-back routines are described in detail below. The -\Var{byteorder} can be set to 0 to request the default byte-order of -the unwind target. To request a particular byte-order, +The callback routines are described in detail below. The +\Var{byteorder} can be set to 0 to request the default byte order of +the unwind target. To request a particular byte order, \Var{byteorder} can be set to any constant defined by -\File{$<$endian.h$>$}. In particular, \Const{\_\_LITTLE\_ENDIAN} would -request little-endian byte-order and \Const{\_\_BIG\_ENDIAN} would -request big-endian byte-order. Whether or not a particular byte-order +\File{$<$endian.h$>$}. In particular, \Const{UNW\_LITTLE\_ENDIAN} would +request little-endian byte order and \Const{UNW\_BIG\_ENDIAN} would +request big-endian byte order. Whether or not a particular byte order is supported depends on the target platform. -\section{Call-back Routines} +\section{Callback Routines} -\Prog{Libunwind} uses a set of call-back routines to access the -information it needs to unwind a chain of stack-frames. These +\Prog{Libunwind} uses a set of callback routines to access the +information it needs to unwind a chain of stack frames. These routines are specified via the \Var{ap} argument, which points to a variable of type \Type{unw\_accessors\_t}. The contents of this -variable is copied into the newly-created address space, so the +variable is copied into the newly created address space, so the variable must remain valid only for the duration of the call to \Func{unw\_create\_addr\_space}(). -The first argument to every call-back routine is an address-space +The first argument to every callback routine is an address space identifier (\Var{as}) and the last argument is an arbitrary, -application-specified void-pointer (\Var{arg}). When invoking a -call-back routine, \Prog{libunwind} sets the \Var{as} argument to the -address-space on whose behalf the invocation is made and the \Var{arg} +application specified void pointer (\Var{arg}). When invoking a +callback routine, \Prog{libunwind} sets the \Var{as} argument to the +address space on whose behalf the invocation is made and the \Var{arg} argument to the value that was specified when -\Func{unw\_init\_remote}(3) was called. +\Func{unw\_init\_remote}(3libunwind) was called. -The synopsis and a detailed description of every call-back routine +The synopsis and a detailed description of every callback routine follows below. -\subsection{Call-back Routine Synopsis} +\subsection{Callback Routine Synopsis} \Type{int} \Func{find\_proc\_info}(\Type{unw\_addr\_space\_t} \Var{as},\\ \SP\SP\SP\SP\SP\SP\SP\SP\SP\SP\SP\SP\SP\SP\SP\SP\Type{unw\_word\_t} \Var{ip}, \Type{unw\_proc\_info\_t~*}\Var{pip},\\ @@ -76,31 +76,31 @@ \subsection{find\_proc\_info} -\Prog{Libunwind} invokes the \Func{find\_proc\_info}() call-back to +\Prog{Libunwind} invokes the \Func{find\_proc\_info}() callback to locate the information need to unwind a particular procedure. The -\Var{ip} argument is an instruction-address inside the procedure whose +\Var{ip} argument is an instruction address inside the procedure whose information is needed. The \Var{pip} argument is a pointer to the variable used to return the desired information. The type of this variable is \Type{unw\_proc\_info\_t}. See -\Func{unw\_get\_proc\_info(3)} for details. Argument -\Var{need\_unwind\_info} is zero if the call-back does not need to +\Func{unw\_get\_proc\_info}(3libunwind) for details. Argument +\Var{need\_unwind\_info} is zero if the callback does not need to provide values for the following members in the \Type{unw\_proc\_info\_t} structure: \Var{format}, \Var{unwind\_info\_size}, and \Var{unwind\_info}. If \Var{need\_unwind\_info} is non-zero, valid values need to be returned in these members. Furthermore, the contents of the memory addressed by the \Var{unwind\_info} member must remain valid until the info is -released via the \Func{put\_unwind\_info} call-back (see below). +released via the \Func{put\_unwind\_info} callback (see below). -On successful completion, the \Func{find\_proc\_info}() call-back must +On successful completion, the \Func{find\_proc\_info}() callback must return zero. Otherwise, the negative value of one of the -\Type{unw\_error\_t} error-codes may be returned. In particular, this -call-back may return -\Const{UNW\_ESTOPUNWIND} to signal the end of -the frame-chain. +\Type{unw\_error\_t} error codes may be returned. In particular, this +callback may return -\Const{UNW\_ESTOPUNWIND} to signal the end of +the frame chain. \subsection{put\_unwind\_info} -\Prog{Libunwind} invokes the \Func{put\_unwind\_info}() call-back to +\Prog{Libunwind} invokes the \Func{put\_unwind\_info}() callback to release the resources (such as memory) allocated by a previous call to \Func{find\_proc\_info}() with the \Var{need\_unwind\_info} argument set to a non-zero value. The \Var{pip} argument has the same value as @@ -113,44 +113,44 @@ \subsection{get\_dyn\_info\_list\_addr} \Prog{Libunwind} invokes the \Func{get\_dyn\_info\_list\_addr}() -call-back to obtain the address of the head of the dynamic unwind-info +callback to obtain the address of the head of the dynamic unwind info registration list. The variable stored at the returned address must have a type of \Type{unw\_dyn\_info\_list\_t} (see -\Func{\_U\_dyn\_register}(3)). The \Var{dliap} argument is a pointer +\Func{\_U\_dyn\_register}(3libunwind)). The \Var{dliap} argument is a pointer to a variable of type \Type{unw\_word\_t} which is used to return the -address of the dynamic unwind-info registration list. If no dynamic -unwind-info registration list exist, the value pointed to by +address of the dynamic unwind info registration list. If no dynamic +unwind info registration list exist, the value pointed to by \Var{dliap} must be cleared to zero. \Prog{Libunwind} will cache the value returned by \Func{get\_dyn\_info\_list\_addr}() if caching is -enabled for the given address-space. The cache can be cleared with a +enabled for the given address space. The cache can be cleared with a call to \Func{unw\_flush\_cache}(). On successful completion, the \Func{get\_dyn\_info\_list\_addr}() -call-back must return zero. Otherwise, the negative value of one of -the \Type{unw\_error\_t} error-codes may be returned. +callback must return zero. Otherwise, the negative value of one of +the \Type{unw\_error\_t} error codes may be returned. \subsection{access\_mem} -\Prog{Libunwind} invokes the \Func{access\_mem}() call-back to read -from or write to a word of memory in the target address-space. The +\Prog{Libunwind} invokes the \Func{access\_mem}() callback to read +from or write to a word of memory in the target address space. The address of the word to be accessed is passed in argument \Var{addr}. To read memory, \Prog{libunwind} sets argument \Var{write} to zero and \Var{valp} to point to the word that receives the read value. To write memory, \Prog{libunwind} sets argument \Var{write} to a non-zero value and \Var{valp} to point to the word that contains the value to be written. The word that \Var{valp} points to is always in the -byte-order of the host-platform, regardless of the byte-order of the -target. In other words, it is the responsibility of the call-back -routine to convert between the target's and the host's byte-order, if +byte order of the host platform, regardless of the byte order of the +target. In other words, it is the responsibility of the callback +routine to convert between the target's and the host's byte order, if necessary. On successful completion, the \Func{access\_mem}() -call-back must return zero. Otherwise, the negative value of one of -the \Type{unw\_error\_t} error-codes may be returned. +callback must return zero. Otherwise, the negative value of one of +the \Type{unw\_error\_t} error codes may be returned. \subsection{access\_reg} -\Prog{Libunwind} invokes the \Func{access\_reg}() call-back to read +\Prog{Libunwind} invokes the \Func{access\_reg}() callback to read from or write to a scalar (non-floating-point) CPU register. The index of the register to be accessed is passed in argument \Var{regnum}. To read a register, \Prog{libunwind} sets argument @@ -158,18 +158,18 @@ the read value. To write a register, \Prog{libunwind} sets argument \Var{write} to a non-zero value and \Var{valp} to point to the word that contains the value to be written. The word that \Var{valp} -points to is always in the byte-order of the host-platform, regardless -of the byte-order of the target. In other words, it is the -responsibility of the call-back routine to convert between the -target's and the host's byte-order, if necessary. +points to is always in the byte order of the host platform, regardless +of the byte order of the target. In other words, it is the +responsibility of the callback routine to convert between the +target's and the host's byte order, if necessary. -On successful completion, the \Func{access\_reg}() call-back must +On successful completion, the \Func{access\_reg}() callback must return zero. Otherwise, the negative value of one of the -\Type{unw\_error\_t} error-codes may be returned. +\Type{unw\_error\_t} error codes may be returned. \subsection{access\_fpreg} -\Prog{Libunwind} invokes the \Func{access\_fpreg}() call-back to read +\Prog{Libunwind} invokes the \Func{access\_fpreg}() callback to read from or write to a floating-point CPU register. The index of the register to be accessed is passed in argument \Var{regnum}. To read a register, \Prog{libunwind} sets argument \Var{write} to zero and @@ -178,67 +178,67 @@ argument \Var{write} to a non-zero value and \Var{fpvalp} to point to the variable of type \Type{unw\_fpreg\_t} that contains the value to be written. The word that \Var{fpvalp} points to is always in the -byte-order of the host-platform, regardless of the byte-order of the -target. In other words, it is the responsibility of the call-back -routine to convert between the target's and the host's byte-order, if +byte order of the host platform, regardless of the byte order of the +target. In other words, it is the responsibility of the callback +routine to convert between the target's and the host's byte order, if necessary. -On successful completion, the \Func{access\_fpreg}() call-back must +On successful completion, the \Func{access\_fpreg}() callback must return zero. Otherwise, the negative value of one of the -\Type{unw\_error\_t} error-codes may be returned. +\Type{unw\_error\_t} error codes may be returned. \subsection{resume} -\Prog{Libunwind} invokes the \Func{resume}() call-back to resume +\Prog{Libunwind} invokes the \Func{resume}() callback to resume execution in the target address space. Argument \Var{cp} is the -unwind-cursor that identifies the stack-frame in which execution +unwind cursor that identifies the stack frame in which execution should resume. By the time \Prog{libunwind} invokes the \Func{resume} -call-back, it has already established the desired machine- and -memory-state via calls to the \Func{access\_reg}(), -\Func{access\_fpreg}, and \Func{access\_mem}() call-backs. Thus, all -the call-back needs to do is perform whatever action is needed to +callback, it has already established the desired machine and +memory state via calls to the \Func{access\_reg}(), +\Func{access\_fpreg}, and \Func{access\_mem}() callbacks. Thus, all +the callback needs to do is perform whatever action is needed to actually resume execution. -The \Func{resume} call-back is invoked only in response to a call to -\Func{unw\_resume}(3), so applications which never invoke -\Func{unw\_resume}(3) need not define the \Func{resume} callback. +The \Func{resume} callback is invoked only in response to a call to +\Func{unw\_resume}(3libunwind), so applications which never invoke +\Func{unw\_resume}(3libunwind) need not define the \Func{resume} callback. -On successful completion, the \Func{resume}() call-back must return +On successful completion, the \Func{resume}() callback must return zero. Otherwise, the negative value of one of the -\Type{unw\_error\_t} error-codes may be returned. As a special case, -when resuming execution in the local address space, the call-back will +\Type{unw\_error\_t} error codes may be returned. As a special case, +when resuming execution in the local address space, the callback will not return on success. \subsection{get\_proc\_name} -\Prog{Libunwind} invokes the \Func{get\_proc\_name}() call-back to -obtain the procedure-name of a static (not dynamically generated) -procedure. Argument \Var{addr} is an instruction-address within the +\Prog{Libunwind} invokes the \Func{get\_proc\_name}() callback to +obtain the procedure name of a static (not dynamically generated) +procedure. Argument \Var{addr} is an instruction address within the procedure whose name is to be obtained. The \Var{bufp} argument is a -pointer to a character-buffer used to return the procedure name. The +pointer to a character buffer used to return the procedure name. The size of this buffer is specified in argument \Var{buf\_len}. The returned name must be terminated by a NUL character. If the procedure's name is longer than \Var{buf\_len} bytes, it must be truncated to \Var{buf\_len}\Prog{-1} bytes, with the last byte in the buffer set to the NUL character and -\Const{UNW\_ENOMEM} must be returned. Argument \Var{offp} is a pointer to a word which is used to -return the byte-offset relative to the start of the procedure whose +return the byte offset relative to the start of the procedure whose name is being returned. For example, if procedure \Func{foo}() starts at address 0x40003000, then invoking \Func{get\_proc\_name}() with \Var{addr} set to 0x40003080 should return a value of 0x80 in the word pointed to by \Var{offp} (assuming the procedure is at least 0x80 bytes long). -On successful completion, the \Func{get\_proc\_name}() call-back must +On successful completion, the \Func{get\_proc\_name}() callback must return zero. Otherwise, the negative value of one of the -\Type{unw\_error\_t} error-codes may be returned. +\Type{unw\_error\_t} error codes may be returned. \section{Return Value} On successful completion, \Func{unw\_create\_addr\_space}() returns a non-\Const{NULL} value that represents the newly created -address-space. Otherwise, \Const{NULL} is returned. +address space. Otherwise, \Const{NULL} is returned. \section{Thread and Signal Safety} @@ -247,12 +247,12 @@ \section{See Also} -\SeeAlso{\_U\_dyn\_register(3)}, -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_destroy\_addr\_space(3)}, -\SeeAlso{unw\_get\_proc\_info(3)}, -\SeeAlso{unw\_init\_remote(3)}, -\SeeAlso{unw\_resume(3)} +\SeeAlso{\_U\_dyn\_register}(3libunwind), +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_destroy\_addr\_space}(3libunwind), +\SeeAlso{unw\_get\_proc\_info}(3libunwind), +\SeeAlso{unw\_init\_remote}(3libunwind), +\SeeAlso{unw\_resume}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_destroy_addr_space.man libunwind-1.8.1/doc/unw_destroy_addr_space.man --- libunwind-1.7.2/doc/unw_destroy_addr_space.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_destroy_addr_space.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 12:09:49 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_DESTROY\\_ADDR\\_SPACE" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_DESTROY\\_ADDR\\_SPACE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_destroy_addr_space \-\- destroy unwind address space @@ -43,8 +45,8 @@ .SH SEE ALSO .PP -libunwind(3), -unw_create_addr_space(3) +libunwind(3libunwind), +unw_create_addr_space(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_destroy_addr_space.tex libunwind-1.8.1/doc/unw_destroy_addr_space.tex --- libunwind-1.7.2/doc/unw_destroy_addr_space.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_destroy_addr_space.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_destroy\_addr\_space}{David Mosberger-Tang}{Programming Library}{unw\_destroy\_addr\_space}unw\_destroy\_addr\_space -- destroy unwind address space +\begin{Name}{3libunwind}{unw\_destroy\_addr\_space}{David Mosberger-Tang}{Programming Library}{unw\_destroy\_addr\_space}unw\_destroy\_addr\_space -- destroy unwind address space \end{Name} \section{Synopsis} @@ -26,8 +26,8 @@ \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_create\_addr\_space(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_flush_cache.man libunwind-1.8.1/doc/unw_flush_cache.man --- libunwind-1.7.2/doc/unw_flush_cache.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_flush_cache.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Fri Dec 2 16:09:33 PST 2016 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_FLUSH\\_CACHE" "3" "02 December 2016" "Programming Library " "Programming Library " +.TH "UNW\\_FLUSH\\_CACHE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_flush_cache \-\- flush cached info @@ -35,15 +37,15 @@ .PP The unw_flush_cache() routine flushes all cached info as it -relates to address\-range lo +relates to address range lo to hi (non\-inclusive) in the -target address\-space as\&. +target address space as\&. In addition, all info cached for -address\-space as -that is not tied to a particular code\-range is +address space as +that is not tied to a particular code range is also flushed. For example, the address of the dynamic registration -list is not tied to a code\-range and its cached value (if any) is +list is not tied to a code range and its cached value (if any) is flushed by a call to this routine. The address range specified by lo and hi @@ -72,15 +74,15 @@ .PP The unw_flush_cache() -routine is thread\-safe as well as safe to +routine is thread safe as well as safe to use from a signal handler. .PP .SH SEE ALSO .PP -libunwind(3), -unw_set_caching_policy(3) -unw_set_cache_size(3) +libunwind(3libunwind), +unw_set_caching_policy(3libunwind) +unw_set_cache_size(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_flush_cache.tex libunwind-1.8.1/doc/unw_flush_cache.tex --- libunwind-1.7.2/doc/unw_flush_cache.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_flush_cache.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_flush\_cache}{David Mosberger-Tang}{Programming Library}{unw\_flush\_cache}unw\_flush\_cache -- flush cached info +\begin{Name}{3libunwind}{unw\_flush\_cache}{David Mosberger-Tang}{Programming Library}{unw\_flush\_cache}unw\_flush\_cache -- flush cached info \end{Name} \section{Synopsis} @@ -17,11 +17,11 @@ \section{Description} The \Func{unw\_flush\_cache}() routine flushes all cached info as it -relates to address-range \Var{lo} to \Var{hi} (non-inclusive) in the -target address-space \Var{as}. In addition, all info cached for -address-space \Var{as} that is not tied to a particular code-range is +relates to address range \Var{lo} to \Var{hi} (non-inclusive) in the +target address space \Var{as}. In addition, all info cached for +address space \Var{as} that is not tied to a particular code range is also flushed. For example, the address of the dynamic registration -list is not tied to a code-range and its cached value (if any) is +list is not tied to a code range and its cached value (if any) is flushed by a call to this routine. The address range specified by \Var{lo} and \Var{hi} should be understood as a hint: \Func{unw\_flush\_cache}() may flush more information than requested, @@ -38,14 +38,14 @@ \section{Thread and Signal Safety} -The \Func{unw\_flush\_cache}() routine is thread-safe as well as safe to +The \Func{unw\_flush\_cache}() routine is thread safe as well as safe to use from a signal handler. \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_set\_caching\_policy(3)} -\SeeAlso{unw\_set\_cache\_size(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_set\_caching\_policy}(3libunwind) +\SeeAlso{unw\_set\_cache\_size}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_get_accessors.man libunwind-1.8.1/doc/unw_get_accessors.man --- libunwind-1.7.2/doc/unw_get_accessors.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_accessors.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:44 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_GET\\_ACCESSORS" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_GET\\_ACCESSORS" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_get_accessors \-\- get pointer to accessor call\-backs @@ -30,18 +32,18 @@ The unw_get_accessors() routine returns a pointer to a unw_accessors_t -structure, which contains the call\-back +structure, which contains the callback routines that were specified when address space as was created -(see unw_create_addr_space(3)). +(see unw_create_addr_space(3libunwind)). The returned pointer is guaranteed to remain valid until address space as is destroyed -by a call to unw_destroy_addr_space(3). +by a call to unw_destroy_addr_space(3libunwind). .PP Note that unw_get_accessors() can be used to retrieve the -call\-back routines for the local address space +callback routines for the local address space unw_local_addr_space\&. .PP .SH RETURN VALUE @@ -58,15 +60,15 @@ .PP The unw_get_accessors() -routine is thread\-safe as well as +routine is thread safe as well as safe to use from a signal handler. .PP .SH SEE ALSO .PP -libunwind(3), -unw_create_addr_space(3), -unw_destroy_addr_space(3) +libunwind(3libunwind), +unw_create_addr_space(3libunwind), +unw_destroy_addr_space(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_get_accessors.tex libunwind-1.8.1/doc/unw_get_accessors.tex --- libunwind-1.7.2/doc/unw_get_accessors.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_accessors.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_get\_accessors}{David Mosberger-Tang}{Programming Library}{unw\_get\_accessors}unw\_get\_accessors -- get pointer to accessor call-backs +\begin{Name}{3libunwind}{unw\_get\_accessors}{David Mosberger-Tang}{Programming Library}{unw\_get\_accessors}unw\_get\_accessors -- get pointer to accessor call-backs \end{Name} \section{Synopsis} @@ -17,14 +17,14 @@ \section{Description} The \Func{unw\_get\_accessors}() routine returns a pointer to a -\Type{unw\_accessors\_t} structure, which contains the call-back +\Type{unw\_accessors\_t} structure, which contains the callback routines that were specified when address space \Var{as} was created -(see \Func{unw\_create\_addr\_space}(3)). The returned pointer is +(see \Func{unw\_create\_addr\_space}(3libunwind)). The returned pointer is guaranteed to remain valid until address space \Var{as} is destroyed -by a call to \Func{unw\_destroy\_addr\_space}(3). +by a call to \Func{unw\_destroy\_addr\_space}(3libunwind). Note that \Func{unw\_get\_accessors}() can be used to retrieve the -call-back routines for the local address space +callback routines for the local address space \Var{unw\_local\_addr\_space}. \section{Return Value} @@ -35,14 +35,14 @@ \section{Thread and Signal Safety} -The \Func{unw\_get\_accessors}() routine is thread-safe as well as +The \Func{unw\_get\_accessors}() routine is thread safe as well as safe to use from a signal handler. \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_create\_addr\_space(3)}, -\SeeAlso{unw\_destroy\_addr\_space(3)} +\SeeAlso{libunwind(3libunwind)}, +\SeeAlso{unw\_create\_addr\_space(3libunwind)}, +\SeeAlso{unw\_destroy\_addr\_space(3libunwind)} \section{Author} diff -Nru libunwind-1.7.2/doc/unw_get_elf_filename.man libunwind-1.8.1/doc/unw_get_elf_filename.man --- libunwind-1.7.2/doc/unw_get_elf_filename.man 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_elf_filename.man 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,110 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} +'\" t +.\" Manual page created with latex2man on Fri Sep 15 20:49:35 2023 +.\" NOTE: This file is generated, DO NOT EDIT. +.de Vb +.ft CW +.nf +.. +.de Ve +.ft R + +.fi +.. +.TH "UNW\\_GET\\_ELF\\_FILENAME" "3libunwind" "15 September 2023" "Programming Library " "Programming Library " +.SH NAME +unw_get_elf_filename +\-\- get backing elf filename +.PP +.SH SYNOPSIS + +.PP +#include +.br +.PP +int +unw_get_elf_filename(unw_cursor_t *cp, +char *bufp, +size_t +len, +unw_word_t *offp); +.br +.PP +.SH DESCRIPTION + +.PP +The unw_get_elf_filename() +routine returns the backing elf +filename of the current instruction pointer that created the stack frame +identified by argument cp\&. +The bufp +argument is a pointer +to a character buffer that is at least len +bytes long. This buffer +is used to return the name of the procedure. The offp +argument is +a pointer to a word that is used to return the byte offset of the instruction +pointer saved in the stack frame identified by cp, +relative to the +start of the elf file. For embedded system the symbol information may has +been stripped from a program, then unw_get_proc_name() +may be +completely unavailable, if the host side have the unstripped program with +debuginfo, then can use addr2line +command tool on host to get the +source file name and line number of the instruction pointer, with the elf +filename in bufp +and address in offp\&. +.PP +.SH RETURN VALUE + +.PP +On successful completion, unw_get_elf_filename() +returns 0. +Otherwise the negative value of one of the error codes below is +returned. +.PP +.SH THREAD AND SIGNAL SAFETY + +.PP +unw_get_elf_filename() +is thread safe. If cursor cp +is +in the local address space, this routine is also safe to use from a +signal handler. +.PP +.SH ERRORS + +.PP +.TP +UNW_EUNSPEC + An unspecified error occurred. +.TP +UNW_ENOINFO + Libunwind +was unable to determine +the elf filename of the instruction pointer. +.TP +UNW_ENOMEM + The elf filename is too long to fit +in the buffer provided. A truncated version of the name has been +returned. +.PP +.SH SEE ALSO + +.PP +libunwind(3libunwind), +unw_get_proc_info(3libunwind) +unw_get_proc_name(3libunwind) +unw_get_elf_filename_by_ip(3libunwind) +addr2line(1addr2line) +.PP +.SH AUTHOR + +.PP +Xiang Lin +.br +Email: \fBmyd.xia@gmail.com\fP +.br +.\" NOTE: This file is generated, DO NOT EDIT. diff -Nru libunwind-1.7.2/doc/unw_get_elf_filename.tex libunwind-1.8.1/doc/unw_get_elf_filename.tex --- libunwind-1.7.2/doc/unw_get_elf_filename.tex 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_elf_filename.tex 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,71 @@ +\documentclass{article} +\usepackage[fancyhdr,pdf]{latex2man} + +\input{common.tex} + +\begin{document} + +\begin{Name}{3libunwind}{unw\_get\_elf\_filename}{Xiang Lin}{Programming Library}{unw\_get\_elf\_filename}unw\_get\_elf\_filename -- get backing elf filename +\end{Name} + +\section{Synopsis} + +\File{\#include $<$libunwind.h$>$}\\ + +\Type{int} \Func{unw\_get\_elf\_filename}(\Type{unw\_cursor\_t~*}\Var{cp}, \Type{char~*}\Var{bufp}, \Type{size\_t} \Var{len}, \Type{unw\_word\_t~*}\Var{offp});\\ + +\section{Description} + +The \Func{unw\_get\_elf\_filename}() routine returns the backing elf +filename of the current instruction pointer that created the stack frame +identified by argument \Var{cp}. The \Var{bufp} argument is a pointer +to a character buffer that is at least \Var{len} bytes long. This buffer +is used to return the name of the procedure. The \Var{offp} argument is +a pointer to a word that is used to return the byte offset of the instruction +pointer saved in the stack frame identified by \Var{cp}, relative to the +start of the elf file. For embedded system the symbol information may has +been stripped from a program, then \Func{unw\_get\_proc\_name}() may be +completely unavailable, if the host side have the unstripped program with +debuginfo, then can use \Prog{addr2line} command tool on host to get the +source file name and line number of the instruction pointer, with the elf +filename in \Var{bufp} and address in \Var{offp}. + +\section{Return Value} + +On successful completion, \Func{unw\_get\_elf\_filename}() returns 0. +Otherwise the negative value of one of the error codes below is +returned. + +\section{Thread and Signal Safety} + +\Func{unw\_get\_elf\_filename}() is thread safe. If cursor \Var{cp} is +in the local address space, this routine is also safe to use from a +signal handler. + +\section{Errors} + +\begin{Description} +\item[\Const{UNW\_EUNSPEC}] An unspecified error occurred. +\item[\Const{UNW\_ENOINFO}] \Prog{Libunwind} was unable to determine + the elf filename of the instruction pointer. +\item[\Const{UNW\_ENOMEM}] The elf filename is too long to fit + in the buffer provided. A truncated version of the name has been + returned. +\end{Description} + +\section{See Also} + +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_get\_proc\_info}(3libunwind) +\SeeAlso{unw\_get\_proc\_name}(3libunwind) +\SeeAlso{unw\_get\_elf\_filename\_by\_ip}(3libunwind) +\SeeAlso{addr2line}(1addr2line) + +\section{Author} + +\noindent +Xiang Lin\\ +Email: \Email{myd.xia@gmail.com}\\ +\LatexManEnd + +\end{document} diff -Nru libunwind-1.7.2/doc/unw_get_elf_filename_by_ip.man libunwind-1.8.1/doc/unw_get_elf_filename_by_ip.man --- libunwind-1.7.2/doc/unw_get_elf_filename_by_ip.man 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_elf_filename_by_ip.man 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,120 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} +'\" t +.\" Manual page created with latex2man on Fri Sep 15 20:49:35 2023 +.\" NOTE: This file is generated, DO NOT EDIT. +.de Vb +.ft CW +.nf +.. +.de Ve +.ft R + +.fi +.. +.TH "UNW\\_GET\\_ELF\\_FILENAME\\_BY\\_IP" "3libunwind" "15 September 2023" "Programming Library " "Programming Library " +.SH NAME +unw_get_elf_filename_by_ip +\-\- get backing elf filename by instruction pointer +.PP +.SH SYNOPSIS + +.PP +#include +.br +.PP +int +unw_get_elf_filename_by_ip(unw_addr_space_t as, +unw_word_t ip, +char *bufp, +size_t +len, +unw_word_t *offp, +void *arg); +.br +.PP +.SH DESCRIPTION + +.PP +The unw_get_elf_filename_by_ip() +routine returns the backing +elf filename of a instruction pointer just like unw_get_elf_filename(), +except that the name is looked up by instruction pointer (IP) instead +of a cursor. +.PP +The routine expects the following arguments: as +is the +address\-space in which the instruction pointer should be looked up. +For a look\-up in the local address\-space, +unw_local_addr_space +can be passed for this argument. +Argument ip +is the instruction\-pointer for which the elf filename +should be looked up. The bufp +argument is a pointer to +a character buffer that is at least len +bytes long. This buffer +is used to return the elf filename. The offp +argument +is a pointer to a word that is used to return the byte offset of the +instruction\-pointer relative to the start of the elf filename. +Lastly, arg +is the address space argument that should be used +when accessing the address space. It has the same purpose as the +argument of the same name for unw_init_remote(). +When +accessing the local address space (first argument is +unw_local_addr_space), +NULL +must be passed for this +argument. +.PP +.SH RETURN VALUE + +.PP +On successful completion, unw_get_elf_filename_by_ip() +returns 0. Otherwise the negative value of one of the error codes +below is returned. +.PP +.SH THREAD AND SIGNAL SAFETY + +.PP +unw_get_elf_filename_by_ip() +is thread safe. If the local +address\-space is passed in argument as, +this routine is also +safe to use from a signal handler. +.PP +.SH ERRORS + +.PP +.TP +UNW_EUNSPEC + An unspecified error occurred. +.TP +UNW_ENOINFO + Libunwind +was unable to determine +the elf filename of the instruction pointer. +.TP +UNW_ENOMEM + The elf filename is too long to fit +in the buffer provided. A truncated version of the name has been +returned. +.PP +.SH SEE ALSO + +.PP +libunwind(3libunwind), +unw_get_elf_filename(3libunwind), +unw_create_addr_space(3libunwind), +unw_init_remote(3libunwind) +.PP +.SH AUTHOR + +.PP +Xiang Lin +.br +Email: \fBmyd.xia@gmail.com\fP +.br +.\" NOTE: This file is generated, DO NOT EDIT. diff -Nru libunwind-1.7.2/doc/unw_get_elf_filename_by_ip.tex libunwind-1.8.1/doc/unw_get_elf_filename_by_ip.tex --- libunwind-1.7.2/doc/unw_get_elf_filename_by_ip.tex 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_elf_filename_by_ip.tex 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,78 @@ +\documentclass{article} +\usepackage[fancyhdr,pdf]{latex2man} + +\input{common.tex} + +\begin{document} + +\begin{Name}{3libunwind}{unw\_get\_elf\_filename\_by\_ip}{Xiang Lin}{Programming Library}{unw\_get\_elf\_filename}unw\_get\_elf\_filename\_by\_ip -- get backing elf filename by instruction pointer +\end{Name} + +\section{Synopsis} + +\File{\#include $<$libunwind.h$>$}\\ + +\Type{int} \Func{unw\_get\_elf\_filename\_by\_ip}(\Type{unw\_addr\_space\_t~}\Var{as}, \Type{unw\_word\_t~}\Var{ip}, \Type{char~*}\Var{bufp}, \Type{size\_t} \Var{len}, \Type{unw\_word\_t~*}\Var{offp}, \Type{void~*}\Var{arg});\\ + +\section{Description} + +The \Func{unw\_get\_elf\_filename\_by\_ip}() routine returns the backing +elf filename of a instruction pointer just like \Func{unw\_get\_elf\_filename}(), +except that the name is looked up by instruction pointer (IP) instead +of a cursor. + +The routine expects the following arguments: \Var{as} is the +address-space in which the instruction pointer should be looked up. +For a look-up in the local address-space, +\Var{unw\_local\_addr\_space} can be passed for this argument. +Argument \Var{ip} is the instruction-pointer for which the elf filename +should be looked up. The \Var{bufp} argument is a pointer to +a character buffer that is at least \Var{len} bytes long. This buffer +is used to return the elf filename. The \Var{offp} argument +is a pointer to a word that is used to return the byte offset of the +instruction-pointer relative to the start of the elf filename. +Lastly, \Var{arg} is the address space argument that should be used +when accessing the address space. It has the same purpose as the +argument of the same name for \Func{unw\_init\_remote}(). When +accessing the local address space (first argument is +\Var{unw\_local\_addr\_space}), \Const{NULL} must be passed for this +argument. + +\section{Return Value} + +On successful completion, \Func{unw\_get\_elf\_filename\_by\_ip}() +returns 0. Otherwise the negative value of one of the error codes +below is returned. + +\section{Thread and Signal Safety} + +\Func{unw\_get\_elf\_filename\_by\_ip}() is thread safe. If the local +address-space is passed in argument \Var{as}, this routine is also +safe to use from a signal handler. + +\section{Errors} + +\begin{Description} +\item[\Const{UNW\_EUNSPEC}] An unspecified error occurred. +\item[\Const{UNW\_ENOINFO}] \Prog{Libunwind} was unable to determine + the elf filename of the instruction pointer. +\item[\Const{UNW\_ENOMEM}] The elf filename is too long to fit + in the buffer provided. A truncated version of the name has been + returned. +\end{Description} + +\section{See Also} + +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_get\_elf\_filename}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{unw\_init\_remote}(3libunwind) + +\section{Author} + +\noindent +Xiang Lin\\ +Email: \Email{myd.xia@gmail.com}\\ +\LatexManEnd + +\end{document} diff -Nru libunwind-1.7.2/doc/unw_get_fpreg.man libunwind-1.8.1/doc/unw_get_fpreg.man --- libunwind-1.7.2/doc/unw_get_fpreg.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_fpreg.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 11:45:59 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_GET\\_FPREG" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_GET\\_FPREG" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_get_fpreg \-\- get contents of floating\-point register @@ -38,20 +40,20 @@ and stores the value in the variable pointed to by valp\&. .PP The register numbering is target\-dependent and described in separate -manual pages (e.g., libunwind\-ia64(3) for the IA\-64 target). +manual pages (e.g., libunwind\-ia64(3libunwind) for the IA\-64 target). Furthermore, the exact set of accessible registers may depend on the type of frame that cp is referring to. For ordinary stack frames, it is normally possible to access only the preserved (``callee\-saved\&'') registers and frame\-related registers (such as the stack\-pointer). However, for signal frames (see -unw_is_signal_frame(3)), +unw_is_signal_frame(3libunwind)), it is usually possible to access all registers. .PP Note that unw_get_fpreg() can only read the contents of -floating\-point registers. See unw_get_fpreg(3) +floating\-point registers. See unw_get_fpreg(3libunwind) for a way to read registers which fit in a single word. .PP @@ -60,14 +62,14 @@ .PP On successful completion, unw_get_fpreg() returns 0. -Otherwise the negative value of one of the error\-codes below is +Otherwise the negative value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_get_fpreg() -is thread\-safe as well as safe to use +is thread safe as well as safe to use from a signal handler. .PP .SH ERRORS @@ -88,17 +90,17 @@ and access_fpreg() call\-backs (see -unw_create_addr_space(3)). +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -libunwind\-ia64(3), -unw_get_reg(3), -unw_is_fpreg(3), -unw_is_signal_frame(3), -unw_set_fpreg(3) +libunwind(3libunwind), +libunwind\-ia64(3libunwind), +unw_get_reg(3libunwind), +unw_is_fpreg(3libunwind), +unw_is_signal_frame(3libunwind), +unw_set_fpreg(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_get_fpreg.tex libunwind-1.8.1/doc/unw_get_fpreg.tex --- libunwind-1.7.2/doc/unw_get_fpreg.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_fpreg.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_get\_fpreg}{David Mosberger-Tang}{Programming Library}{unw\_get\_fpreg}unw\_get\_fpreg -- get contents of floating-point register +\begin{Name}{3libunwind}{unw\_get\_fpreg}{David Mosberger-Tang}{Programming Library}{unw\_get\_fpreg}unw\_get\_fpreg -- get contents of floating-point register \end{Name} \section{Synopsis} @@ -21,28 +21,28 @@ and stores the value in the variable pointed to by \Var{valp}. The register numbering is target-dependent and described in separate -manual pages (e.g., libunwind-ia64(3) for the IA-64 target). +manual pages (e.g., libunwind-ia64(3libunwind) for the IA-64 target). Furthermore, the exact set of accessible registers may depend on the type of frame that \Var{cp} is referring to. For ordinary stack frames, it is normally possible to access only the preserved (``callee-saved'') registers and frame-related registers (such as the stack-pointer). However, for signal frames (see -\Func{unw\_is\_signal\_frame}(3)), it is usually possible to access +\Func{unw\_is\_signal\_frame}(3libunwind)), it is usually possible to access all registers. Note that \Func{unw\_get\_fpreg}() can only read the contents of -floating-point registers. See \Func{unw\_get\_fpreg}(3) for a way to +floating-point registers. See \Func{unw\_get\_fpreg}(3libunwind) for a way to read registers which fit in a single word. \section{Return Value} On successful completion, \Func{unw\_get\_fpreg}() returns 0. -Otherwise the negative value of one of the error-codes below is +Otherwise the negative value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_get\_fpreg}() is thread-safe as well as safe to use +\Func{unw\_get\_fpreg}() is thread safe as well as safe to use from a signal handler. \section{Errors} @@ -55,16 +55,16 @@ In addition, \Func{unw\_get\_fpreg}() may return any error returned by the \Func{access\_mem}(), \Func{access\_reg}(), and \Func{access\_fpreg}() call-backs (see -\Func{unw\_create\_addr\_space}(3)). +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{libunwind-ia64(3)}, -\SeeAlso{unw\_get\_reg(3)}, -\SeeAlso{unw\_is\_fpreg(3)}, -\SeeAlso{unw\_is\_signal\_frame(3)}, -\SeeAlso{unw\_set\_fpreg(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{libunwind-ia64}(3libunwind), +\SeeAlso{unw\_get\_reg}(3libunwind), +\SeeAlso{unw\_is\_fpreg}(3libunwind), +\SeeAlso{unw\_is\_signal\_frame}(3libunwind), +\SeeAlso{unw\_set\_fpreg}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_get_proc_info.man libunwind-1.8.1/doc/unw_get_proc_info.man --- libunwind-1.7.2/doc/unw_get_proc_info.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_info.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Sun Aug 29 23:45:06 CEST 2021 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_GET\\_PROC\\_INFO" "3" "29 August 2021" "Programming Library " "Programming Library " +.TH "UNW\\_GET\\_PROC\\_INFO" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_get_proc_info \-\- get info on current procedure @@ -59,7 +61,7 @@ .TP unw_word_t lsda The address of the -language\-specific data\-area (LSDA). This area normally contains +language\-specific data area (LSDA). This area normally contains language\-specific information needed during exception handling. If the procedure has no such area, this member is cleared to 0. .br @@ -73,11 +75,11 @@ .br .TP unw_word_t gp - The global\-pointer of the + The global pointer of the procedure. On platforms that do not use a global pointer, this member may contain an undefined value. On all other platforms, it -must be set either to the correct global\-pointer value of the -procedure or to 0 if the proper global\-pointer cannot be +must be set either to the correct global pointer value of the +procedure or to 0 if the proper global pointer cannot be obtained for some reason. .br .TP @@ -86,23 +88,23 @@ currently no target\-independent flags. For the IA\-64 target, the flag UNW_PI_FLAG_IA64_RBS_SWITCH is set if the -procedure may switch the register\-backing store. +procedure may switch the register backing store. .br .TP int format - The format of the unwind\-info for this -procedure. If the unwind\-info consists of dynamic procedure info, + The format of the unwind info for this +procedure. If the unwind info consists of dynamic procedure info, format is equal to UNW_INFO_FORMAT_DYNAMIC\&. If the -unwind\-info consists of a (target\-specific) unwind table, it is +unwind info consists of a (target\-specific) unwind table, it is equal to UNW_INFO_FORMAT_TABLE\&. All other values are reserved for future use by libunwind\&. This member exists for use by the find_proc_info() -call\-back (see -unw_create_addr_space(3)). +callback (see +unw_create_addr_space(3libunwind)). The unw_get_proc_info() routine @@ -110,11 +112,11 @@ .br .TP int unwind_info_size - The size of the unwind\-info + The size of the unwind info in bytes. This member exists for use by the find_proc_info() -call\-back (see -unw_create_addr_space(3)). +callback (see +unw_create_addr_space(3libunwind)). The unw_get_proc_info() routine @@ -122,13 +124,13 @@ .br .TP void *unwind_info - The pointer to the unwind\-info. + The pointer to the unwind info. If no unwind info is available, this member must be set to NULL\&. This member exists for use by the find_proc_info() -call\-back (see -unw_create_addr_space(3)). +callback (see +unw_create_addr_space(3libunwind)). The unw_get_proc_info() routine @@ -151,16 +153,16 @@ .PP On successful completion, unw_get_proc_info() returns 0. -Otherwise the negative value of one of the error\-codes below is +Otherwise the negative value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_get_proc_info() -is thread\-safe. If cursor cp +is thread safe. If cursor cp is -in the local address\-space, this routine is also safe to use from a +in the local address space, this routine is also safe to use from a signal handler. .PP .SH ERRORS @@ -173,24 +175,24 @@ UNW_ENOINFO Libunwind was unable to locate -unwind\-info for the procedure. +unwind info for the procedure. .TP UNW_EBADVERSION - The unwind\-info for the procedure has + The unwind info for the procedure has version or format that is not understood by libunwind\&. .PP In addition, unw_get_proc_info() may return any error returned by the access_mem() -call\-back (see -unw_create_addr_space(3)). +callback (see +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -unw_create_addr_space(3), -unw_get_proc_name(3) +libunwind(3libunwind), +unw_create_addr_space(3libunwind), +unw_get_proc_name(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_get_proc_info.tex libunwind-1.8.1/doc/unw_get_proc_info.tex --- libunwind-1.7.2/doc/unw_get_proc_info.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_info.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_get\_proc\_info}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_info}unw\_get\_proc\_info -- get info on current procedure +\begin{Name}{3libunwind}{unw\_get\_proc\_info}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_info}unw\_get\_proc\_info -- get info on current procedure \end{Name} \section{Synopsis} @@ -32,44 +32,44 @@ cannot be determined (e.g., due to lack of unwind information), the \Var{end\_ip} member is cleared to 0. \\ \item[\Type{unw\_word\_t} \Var{lsda}] The address of the - language-specific data-area (LSDA). This area normally contains + language-specific data area (LSDA). This area normally contains language-specific information needed during exception handling. If the procedure has no such area, this member is cleared to 0. \\ \item[\Type{unw\_word\_t} \Var{handler}] The address of the exception handler routine. This is sometimes called the \emph{personality} routine. If the procedure does not define a personality routine, the \Var{handler} member is cleared to 0. \\ -\item[\Type{unw\_word\_t} \Var{gp}] The global-pointer of the +\item[\Type{unw\_word\_t} \Var{gp}] The global pointer of the procedure. On platforms that do not use a global pointer, this member may contain an undefined value. On all other platforms, it - must be set either to the correct global-pointer value of the - procedure or to 0 if the proper global-pointer cannot be + must be set either to the correct global pointer value of the + procedure or to 0 if the proper global pointer cannot be obtained for some reason. \\ \item[\Type{unw\_word\_t} \Var{flags}] A set of flags. There are currently no target-independent flags. For the IA-64 target, the flag \Const{UNW\_PI\_FLAG\_IA64\_RBS\_SWITCH} is set if the - procedure may switch the register-backing store.\\ -\item[\Type{int} \Var{format}] The format of the unwind-info for this - procedure. If the unwind-info consists of dynamic procedure info, + procedure may switch the register backing store.\\ +\item[\Type{int} \Var{format}] The format of the unwind info for this + procedure. If the unwind info consists of dynamic procedure info, \Var{format} is equal to \Const{UNW\_INFO\_FORMAT\_DYNAMIC}. If the - unwind-info consists of a (target-specific) unwind table, it is + unwind info consists of a (target-specific) unwind table, it is equal to \Const{UNW\_INFO\_FORMAT\_TABLE}. All other values are reserved for future use by \Prog{libunwind}. This member exists - for use by the \Func{find\_proc\_info}() call-back (see - \Func{unw\_create\_addr\_space}(3)). The + for use by the \Func{find\_proc\_info}() callback (see + \Func{unw\_create\_addr\_space}(3libunwind)). The \Func{unw\_get\_proc\_info}() routine may return an undefined value in this member. \\ -\item[\Type{int} \Var{unwind\_info\_size}] The size of the unwind-info +\item[\Type{int} \Var{unwind\_info\_size}] The size of the unwind info in bytes. This member exists for use by the - \Func{find\_proc\_info}() call-back (see - \Func{unw\_create\_addr\_space}(3)). The + \Func{find\_proc\_info}() callback (see + \Func{unw\_create\_addr\_space}(3libunwind)). The \Func{unw\_get\_proc\_info}() routine may return an undefined value in this member.\\ -\item[\Type{void~*}\Var{unwind\_info}] The pointer to the unwind-info. +\item[\Type{void~*}\Var{unwind\_info}] The pointer to the unwind info. If no unwind info is available, this member must be set to \Const{NULL}. This member exists for use by the - \Func{find\_proc\_info}() call-back (see - \Func{unw\_create\_addr\_space}(3)). The + \Func{find\_proc\_info}() callback (see + \Func{unw\_create\_addr\_space}(3libunwind)). The \Func{unw\_get\_proc\_info}() routine may return an undefined value in this member.\\ \end{description} @@ -84,13 +84,13 @@ \section{Return Value} On successful completion, \Func{unw\_get\_proc\_info}() returns 0. -Otherwise the negative value of one of the error-codes below is +Otherwise the negative value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_get\_proc\_info}() is thread-safe. If cursor \Var{cp} is -in the local address-space, this routine is also safe to use from a +\Func{unw\_get\_proc\_info}() is thread safe. If cursor \Var{cp} is +in the local address space, this routine is also safe to use from a signal handler. \section{Errors} @@ -98,19 +98,19 @@ \begin{Description} \item[\Const{UNW\_EUNSPEC}] An unspecified error occurred. \item[\Const{UNW\_ENOINFO}] \Prog{Libunwind} was unable to locate - unwind-info for the procedure. -\item[\Const{UNW\_EBADVERSION}] The unwind-info for the procedure has + unwind info for the procedure. +\item[\Const{UNW\_EBADVERSION}] The unwind info for the procedure has version or format that is not understood by \Prog{libunwind}. \end{Description} In addition, \Func{unw\_get\_proc\_info}() may return any error -returned by the \Func{access\_mem}() call-back (see -\Func{unw\_create\_addr\_space}(3)). +returned by the \Func{access\_mem}() callback (see +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_create\_addr\_space(3)}, -\SeeAlso{unw\_get\_proc\_name(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{unw\_get\_proc\_name}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_get_proc_info_by_ip.man libunwind-1.8.1/doc/unw_get_proc_info_by_ip.man --- libunwind-1.7.2/doc/unw_get_proc_info_by_ip.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_info_by_ip.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Sun Aug 29 23:45:06 CEST 2021 +.\" Manual page created with latex2man on Tue Aug 29 11:45:59 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_GET\\_PROC\\_INFO\\_BY\\_IP" "3" "29 August 2021" "Programming Library " "Programming Library " +.TH "UNW\\_GET\\_PROC\\_INFO\\_BY\\_IP" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_get_proc_info_by_ip \-\- get procedure info by IP @@ -38,13 +40,13 @@ except that the info is looked up by instruction\-pointer (IP) instead of a cursor. This is more flexible because it is possible to look up the info for an arbitrary procedure, -even if it is not part of the current call\-chain. However, since it +even if it is not part of the current call chain. However, since it is more flexible, it also tends to run slower (and often much slower) than unw_get_proc_info(). .PP The routine expects the following arguments: as is the -address\-space in which the instruction\-pointer should be looked up. +address\-space in which the instruction pointer should be looked up. For a look\-up in the local address\-space, unw_local_addr_space can be passed for this argument. @@ -55,11 +57,11 @@ type unw_proc_info_t which is used to return the info. Lastly, arg -is the address\-space argument that should be used -when accessing the address\-space. It has the same purpose as the +is the address space argument that should be used +when accessing the address space. It has the same purpose as the argument of the same name for unw_init_remote(). When -accessing the local address\-space (first argument is +accessing the local address space (first argument is unw_local_addr_space), NULL must be passed for this @@ -87,8 +89,8 @@ .PP unw_get_proc_info_by_ip() -is thread\-safe. If the local -address\-space is passed in argument as, +is thread safe. If the local +address space is passed in argument as, this routine is also safe to use from a signal handler. .PP @@ -111,17 +113,17 @@ In addition, unw_get_proc_info_by_ip() may return any error returned by the access_mem() -call\-back (see -unw_create_addr_space(3)). +callback (see +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -unw_create_addr_space(3), -unw_get_proc_name(3), -unw_get_proc_info(3), -unw_init_remote(3) +libunwind(3libunwind), +unw_create_addr_space(3libunwind), +unw_get_proc_name(3libunwind), +unw_get_proc_info(3libunwind), +unw_init_remote(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_get_proc_info_by_ip.tex libunwind-1.8.1/doc/unw_get_proc_info_by_ip.tex --- libunwind-1.7.2/doc/unw_get_proc_info_by_ip.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_info_by_ip.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_get\_proc\_info\_by\_ip}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_info\_by\_ip}unw\_get\_proc\_info\_by\_ip -- get procedure info by IP +\begin{Name}{3libunwind}{unw\_get\_proc\_info\_by\_ip}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_info\_by\_ip}unw\_get\_proc\_info\_by\_ip -- get procedure info by IP \end{Name} \section{Synopsis} @@ -21,21 +21,21 @@ \Func{unw\_get\_proc\_info}(), except that the info is looked up by instruction-pointer (IP) instead of a cursor. This is more flexible because it is possible to look up the info for an arbitrary procedure, -even if it is not part of the current call-chain. However, since it +even if it is not part of the current call chain. However, since it is more flexible, it also tends to run slower (and often much slower) than \Func{unw\_get\_proc\_info}(). The routine expects the following arguments: \Var{as} is the -address-space in which the instruction-pointer should be looked up. +address-space in which the instruction pointer should be looked up. For a look-up in the local address-space, \Var{unw\_local\_addr\_space} can be passed for this argument. Argument \Var{ip} is the instruction-pointer for which the procedure info should be looked up and \Var{pip} is a pointer to a structure of type \Type{unw\_proc\_info\_t} which is used to return the info. -Lastly, \Var{arg} is the address-space argument that should be used -when accessing the address-space. It has the same purpose as the +Lastly, \Var{arg} is the address space argument that should be used +when accessing the address space. It has the same purpose as the argument of the same name for \Func{unw\_init\_remote}(). When -accessing the local address-space (first argument is +accessing the local address space (first argument is \Var{unw\_local\_addr\_space}), \Const{NULL} must be passed for this argument. @@ -55,8 +55,8 @@ \section{Thread and Signal Safety} -\Func{unw\_get\_proc\_info\_by\_ip}() is thread-safe. If the local -address-space is passed in argument \Var{as}, this routine is also +\Func{unw\_get\_proc\_info\_by\_ip}() is thread safe. If the local +address space is passed in argument \Var{as}, this routine is also safe to use from a signal handler. \section{Errors} @@ -69,16 +69,16 @@ version or format that is not understood by \Prog{libunwind}. \end{Description} In addition, \Func{unw\_get\_proc\_info\_by\_ip}() may return any -error returned by the \Func{access\_mem}() call-back (see -\Func{unw\_create\_addr\_space}(3)). +error returned by the \Func{access\_mem}() callback (see +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_create\_addr\_space(3)}, -\SeeAlso{unw\_get\_proc\_name(3)}, -\SeeAlso{unw\_get\_proc\_info(3)}, -\SeeAlso{unw\_init\_remote(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{unw\_get\_proc\_name}(3libunwind), +\SeeAlso{unw\_get\_proc\_info}(3libunwind), +\SeeAlso{unw\_init\_remote}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_get_proc_info_in_range.man libunwind-1.8.1/doc/unw_get_proc_info_in_range.man --- libunwind-1.7.2/doc/unw_get_proc_info_in_range.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_info_in_range.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,7 +1,7 @@ .\" *********************************** start of \input{common.tex} .\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Wed Jun 29 18:53:42 2022 +.\" Manual page created with latex2man on Tue Aug 29 11:45:59 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -12,7 +12,7 @@ .fi .. -.TH "UNW\\_GET\\_PROC\\_INFO\\_IN\\_RANGE" "3" "29 June 2022" "Programming Library " "Programming Library " +.TH "UNW\\_GET\\_PROC\\_INFO\\_IN\\_RANGE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_get_proc_info_in_range \-\- get procedure info in IP range and a frame index table @@ -42,9 +42,9 @@ kind of auxiliary information about a procedure as unw_get_proc_info_by_ip(), except that the info is looked up in -instruction\-pointer (IP) range and frame table instead of just at IP. This +instruction pointer (IP) range and frame table instead of just at IP. This is equally flexible because it is possible to look up the info for an arbitrary -procedure, even if it is not part of the current call\-chain. However, since it +procedure, even if it is not part of the current call chain. However, since it is more flexible, it also tends to run slower (and often much slower) than unw_get_proc_info(). .PP @@ -59,8 +59,8 @@ .PP unw_get_proc_info_in_range() -is thread\-safe. If the local -address\-space is passed in argument as, +is thread safe. If the local +address space is passed in argument as, this routine is also safe to use from a signal handler. .PP @@ -86,17 +86,17 @@ In addition, unw_get_proc_info_by_ip() may return any error returned by the access_mem() -call\-back (see -unw_create_addr_space(3)). +callback (see +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -unw_get_proc_info_in_range(3), -unw_create_addr_space(3), -unw_get_proc_name(3), -unw_get_proc_info(3) +libunwind(3libunwind), +unw_get_proc_info_in_range(3libunwind), +unw_create_addr_space(3libunwind), +unw_get_proc_name(3libunwind), +unw_get_proc_info(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_get_proc_info_in_range.tex libunwind-1.8.1/doc/unw_get_proc_info_in_range.tex --- libunwind-1.7.2/doc/unw_get_proc_info_in_range.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_info_in_range.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,23 +5,23 @@ \begin{document} -\begin{Name}{3}{unw\_get\_proc\_info\_in\_range}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_info\_in\_range}unw\_get\_proc\_info\_in\_range -- get procedure info in IP range and a frame index table +\begin{Name}{3libunwind}{unw\_get\_proc\_info\_in\_range}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_info\_in\_range}unw\_get\_proc\_info\_in\_range -- get procedure info in IP range and a frame index table \end{Name} \section{Synopsis} \File{\#include $<$libunwind.h$>$}\\ -\Type{int} \Func{unw\_get\_proc\_info\_in\_range}(\Type{unw\_word\_t~}\Var{start_ip}, \Type{unw\_word\_t~}\Var{end_ip}, \Type{unw\_word\_t~}\Var{eh_frame_table}, \Type{unw\_word\_t~}\Var{eh_frame_table_len}, \Type{unw\_word\_t~}\Var{exidx_frame_table}, \Type{unw\_word\_t~}\Var{exidx_frame_table_len,}, \Type{unw\_addr\_space\_t~*}\Var{as}, \Type{void~*}\Var{arg});\\ +\Type{int} \Func{unw\_get\_proc\_info\_in\_range}(\Type{unw\_word\_t~}\Var{start\_ip}, \Type{unw\_word\_t~}\Var{end_ip}, \Type{unw\_word\_t~}\Var{eh_frame_table}, \Type{unw\_word\_t~}\Var{eh_frame_table_len}, \Type{unw\_word\_t~}\Var{exidx_frame_table}, \Type{unw\_word\_t~}\Var{exidx_frame_table_len,}, \Type{unw\_addr\_space\_t~*}\Var{as}, \Type{void~*}\Var{arg});\\ \section{Description} The \Func{unw\_get\_proc\_info\_in\_range}() routine returns the same kind of auxiliary information about a procedure as \Func{unw\_get\_proc\_info\_by\_ip}(), except that the info is looked up in -instruction-pointer (IP) range and frame table instead of just at IP. This +instruction pointer (IP) range and frame table instead of just at IP. This is equally flexible because it is possible to look up the info for an arbitrary -procedure, even if it is not part of the current call-chain. However, since it +procedure, even if it is not part of the current call chain. However, since it is more flexible, it also tends to run slower (and often much slower) than \Func{unw\_get\_proc\_info}(). @@ -33,8 +33,8 @@ \section{Thread and Signal Safety} -\Func{unw\_get\_proc\_info\_in\_range}() is thread-safe. If the local -address-space is passed in argument \Var{as}, this routine is also +\Func{unw\_get\_proc\_info\_in\_range}() is thread safe. If the local +address space is passed in argument \Var{as}, this routine is also safe to use from a signal handler. \section{Errors} @@ -48,16 +48,16 @@ \item[\Const{UNW\_EINVAL}] An unsupported table encoding was specified. \end{Description} In addition, \Func{unw\_get\_proc\_info\_by\_ip}() may return any -error returned by the \Func{access\_mem}() call-back (see -\Func{unw\_create\_addr\_space}(3)). +error returned by the \Func{access\_mem}() callback (see +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_get\_proc\_info\_in\_range(3)}, -\SeeAlso{unw\_create\_addr\_space(3)}, -\SeeAlso{unw\_get\_proc\_name(3)}, -\SeeAlso{unw\_get\_proc\_info(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_get\_proc\_info\_in\_range}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{unw\_get\_proc\_name}(3libunwind), +\SeeAlso{unw\_get\_proc\_info}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_get_proc_name.man libunwind-1.8.1/doc/unw_get_proc_name.man --- libunwind-1.7.2/doc/unw_get_proc_name.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_name.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Sun Aug 29 23:45:06 CEST 2021 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_GET\\_PROC\\_NAME" "3" "29 August 2021" "Programming Library " "Programming Library " +.TH "UNW\\_GET\\_PROC\\_NAME" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_get_proc_name \-\- get name of current procedure @@ -42,14 +44,14 @@ bytes long. This buffer is used to return the name of the procedure. The offp argument is a pointer to a -word that is used to return the byte\-offset of the instruction\-pointer +word that is used to return the byte offset of the instruction\-pointer saved in the stack frame identified by cp, relative to the start of the procedure. For example, if procedure foo() starts at address 0x40003000, then invoking unw_get_proc_name() on a -stack frame with an instruction\-pointer value of 0x40003080 would +stack frame with an instruction pointer value of 0x40003080 would return a value of 0x80 in the word pointed to by offp (assuming the procedure is at least 0x80 bytes long). @@ -64,23 +66,23 @@ is always relative to the returned name, which ensures that the value (address) of the returned name plus the returned offset will always be equal to the -instruction\-pointer of the stack frame identified by cp\&. +instruction pointer of the stack frame identified by cp\&. .PP .SH RETURN VALUE .PP On successful completion, unw_get_proc_name() returns 0. -Otherwise the negative value of one of the error\-codes below is +Otherwise the negative value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_get_proc_name() -is thread\-safe. If cursor cp +is thread safe. If cursor cp is -in the local address\-space, this routine is also safe to use from a +in the local address space, this routine is also safe to use from a signal handler. .PP .SH ERRORS @@ -103,14 +105,14 @@ In addition, unw_get_proc_name() may return any error returned by the access_mem() -call\-back (see -unw_create_addr_space(3)). +callback (see +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -unw_get_proc_info(3) +libunwind(3libunwind), +unw_get_proc_info(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_get_proc_name.tex libunwind-1.8.1/doc/unw_get_proc_name.tex --- libunwind-1.7.2/doc/unw_get_proc_name.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_name.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_get\_proc\_name}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_name}unw\_get\_proc\_name -- get name of current procedure +\begin{Name}{3libunwind}{unw\_get\_proc\_name}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_name}unw\_get\_proc\_name -- get name of current procedure \end{Name} \section{Synopsis} @@ -21,11 +21,11 @@ \Var{cp}. The \Var{bufp} argument is a pointer to a character buffer that is at least \Var{len} bytes long. This buffer is used to return the name of the procedure. The \Var{offp} argument is a pointer to a -word that is used to return the byte-offset of the instruction-pointer +word that is used to return the byte offset of the instruction-pointer saved in the stack frame identified by \Var{cp}, relative to the start of the procedure. For example, if procedure \Func{foo}() starts at address 0x40003000, then invoking \Func{unw\_get\_proc\_name}() on a -stack frame with an instruction-pointer value of 0x40003080 would +stack frame with an instruction pointer value of 0x40003080 would return a value of 0x80 in the word pointed to by \Var{offp} (assuming the procedure is at least 0x80 bytes long). @@ -38,18 +38,18 @@ However, the offset returned through \Var{offp} is always relative to the returned name, which ensures that the value (address) of the returned name plus the returned offset will always be equal to the -instruction-pointer of the stack frame identified by \Var{cp}. +instruction pointer of the stack frame identified by \Var{cp}. \section{Return Value} On successful completion, \Func{unw\_get\_proc\_name}() returns 0. -Otherwise the negative value of one of the error-codes below is +Otherwise the negative value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_get\_proc\_name}() is thread-safe. If cursor \Var{cp} is -in the local address-space, this routine is also safe to use from a +\Func{unw\_get\_proc\_name}() is thread safe. If cursor \Var{cp} is +in the local address space, this routine is also safe to use from a signal handler. \section{Errors} @@ -63,13 +63,13 @@ returned. \end{Description} In addition, \Func{unw\_get\_proc\_name}() may return any error -returned by the \Func{access\_mem}() call-back (see -\Func{unw\_create\_addr\_space}(3)). +returned by the \Func{access\_mem}() callback (see +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_get\_proc\_info(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_get\_proc\_info}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_get_proc_name_by_ip.man libunwind-1.8.1/doc/unw_get_proc_name_by_ip.man --- libunwind-1.7.2/doc/unw_get_proc_name_by_ip.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_name_by_ip.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Mon Aug 30 08:48:42 CEST 2021 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,10 +12,10 @@ .fi .. -.TH "UNW\\_GET\\_PROC\\_NAME\\_BY\\_IP" "3" "30 August 2021" "Programming Library " "Programming Library " +.TH "UNW\\_GET\\_PROC\\_NAME\\_BY\\_IP" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_get_proc_name_by_ip -\-\- get procedure name +\-\- get procedure name .PP .SH SYNOPSIS @@ -35,98 +37,98 @@ .PP The unw_get_proc_name_by_ip() -routine returns the name of +routine returns the name of a procedure just like unw_get_proc_name(), -except that the -name is looked up by instruction\-pointer (IP) instead of a cursor. +except that the +name is looked up by instruction pointer (IP) instead of a cursor. .PP The routine expects the following arguments: as -is the -address\-space in which the instruction\-pointer should be looked up. -For a look\-up in the local address\-space, +is the +address\-space in which the instruction pointer should be looked up. +For a look\-up in the local address\-space, unw_local_addr_space -can be passed for this argument. +can be passed for this argument. Argument ip -is the instruction\-pointer for which the procedure +is the instruction\-pointer for which the procedure name should be looked up. The bufp -argument is a pointer to +argument is a pointer to a character buffer that is at least len -bytes long. This buffer +bytes long. This buffer is used to return the name of the procedure. The offp -argument -is a pointer to a word that is used to return the byte\-offset of the -instruction\-pointer relative to the start of the procedure. +argument +is a pointer to a word that is used to return the byte offset of the +instruction\-pointer relative to the start of the procedure. Lastly, arg -is the address\-space argument that should be used -when accessing the address\-space. It has the same purpose as the +is the address space argument that should be used +when accessing the address space. It has the same purpose as the argument of the same name for unw_init_remote(). -When -accessing the local address\-space (first argument is +When +accessing the local address space (first argument is unw_local_addr_space), NULL -must be passed for this -argument. +must be passed for this +argument. .PP -Note that on some platforms there is no reliable way to distinguish -between procedure names and ordinary labels. Furthermore, if symbol -information has been stripped from a program, procedure names may be -completely unavailable or may be limited to those exported via a -dynamic symbol table. In such cases, +Note that on some platforms there is no reliable way to distinguish +between procedure names and ordinary labels. Furthermore, if symbol +information has been stripped from a program, procedure names may be +completely unavailable or may be limited to those exported via a +dynamic symbol table. In such cases, unw_get_proc_name_by_ip() -may return the name of a label -or a preceding (nearby) procedure. However, the offset returned +may return the name of a label +or a preceding (nearby) procedure. However, the offset returned through offp -is always relative to the returned name, which -ensures that the value (address) of the returned name plus the -returned offset will always be equal to the instruction\-pointer +is always relative to the returned name, which +ensures that the value (address) of the returned name plus the +returned offset will always be equal to the instruction pointer ip\&. .PP .SH RETURN VALUE .PP On successful completion, unw_get_proc_name_by_ip() -returns 0. Otherwise the negative value of one of the error\-codes -below is returned. +returns 0. Otherwise the negative value of one of the error codes +below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_get_proc_name_by_ip() -is thread\-safe. If the local +is thread safe. If the local address\-space is passed in argument as, -this routine is also -safe to use from a signal handler. +this routine is also +safe to use from a signal handler. .PP .SH ERRORS .PP .TP UNW_EUNSPEC - An unspecified error occurred. + An unspecified error occurred. .TP UNW_ENOINFO Libunwind -was unable to determine -the name of the procedure. +was unable to determine +the name of the procedure. .TP UNW_ENOMEM - The procedure name is too long to fit -in the buffer provided. A truncated version of the name has been -returned. + The procedure name is too long to fit +in the buffer provided. A truncated version of the name has been +returned. .PP In addition, unw_get_proc_name_by_ip() -may return any error +may return any error returned by the access_mem() -call\-back (see -unw_create_addr_space(3)). +callback (see +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -unw_create_addr_space(3), -unw_get_proc_name(3), -unw_init_remote(3) +libunwind(3libunwind), +unw_create_addr_space(3libunwind), +unw_get_proc_name(3libunwind), +unw_init_remote(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_get_proc_name_by_ip.tex libunwind-1.8.1/doc/unw_get_proc_name_by_ip.tex --- libunwind-1.7.2/doc/unw_get_proc_name_by_ip.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_proc_name_by_ip.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_get\_proc\_name\_by\_ip}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_name}unw\_get\_proc\_name\_by\_ip -- get procedure name +\begin{Name}{3libunwind}{unw\_get\_proc\_name\_by\_ip}{David Mosberger-Tang}{Programming Library}{unw\_get\_proc\_name}unw\_get\_proc\_name\_by\_ip -- get procedure name \end{Name} \section{Synopsis} @@ -18,22 +18,22 @@ The \Func{unw\_get\_proc\_name\_by\_ip}() routine returns the name of a procedure just like \Func{unw\_get\_proc\_name}(), except that the -name is looked up by instruction-pointer (IP) instead of a cursor. +name is looked up by instruction pointer (IP) instead of a cursor. The routine expects the following arguments: \Var{as} is the -address-space in which the instruction-pointer should be looked up. +address-space in which the instruction pointer should be looked up. For a look-up in the local address-space, \Var{unw\_local\_addr\_space} can be passed for this argument. Argument \Var{ip} is the instruction-pointer for which the procedure name should be looked up. The \Var{bufp} argument is a pointer to a character buffer that is at least \Var{len} bytes long. This buffer is used to return the name of the procedure. The \Var{offp} argument -is a pointer to a word that is used to return the byte-offset of the +is a pointer to a word that is used to return the byte offset of the instruction-pointer relative to the start of the procedure. -Lastly, \Var{arg} is the address-space argument that should be used -when accessing the address-space. It has the same purpose as the +Lastly, \Var{arg} is the address space argument that should be used +when accessing the address space. It has the same purpose as the argument of the same name for \Func{unw\_init\_remote}(). When -accessing the local address-space (first argument is +accessing the local address space (first argument is \Var{unw\_local\_addr\_space}), \Const{NULL} must be passed for this argument. @@ -46,18 +46,18 @@ or a preceding (nearby) procedure. However, the offset returned through \Var{offp} is always relative to the returned name, which ensures that the value (address) of the returned name plus the -returned offset will always be equal to the instruction-pointer +returned offset will always be equal to the instruction pointer \Var{ip}. \section{Return Value} On successful completion, \Func{unw\_get\_proc\_name\_by\_ip}() -returns 0. Otherwise the negative value of one of the error-codes +returns 0. Otherwise the negative value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_get\_proc\_name\_by\_ip}() is thread-safe. If the local +\Func{unw\_get\_proc\_name\_by\_ip}() is thread safe. If the local address-space is passed in argument \Var{as}, this routine is also safe to use from a signal handler. @@ -72,15 +72,15 @@ returned. \end{Description} In addition, \Func{unw\_get\_proc\_name\_by\_ip}() may return any error -returned by the \Func{access\_mem}() call-back (see -\Func{unw\_create\_addr\_space}(3)). +returned by the \Func{access\_mem}() callback (see +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_create\_addr\_space(3)}, -\SeeAlso{unw\_get\_proc\_name(3)}, -\SeeAlso{unw\_init\_remote(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{unw\_get\_proc\_name}(3libunwind), +\SeeAlso{unw\_init\_remote}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_get_reg.man libunwind-1.8.1/doc/unw_get_reg.man --- libunwind-1.7.2/doc/unw_get_reg.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_reg.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_GET\\_REG" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_GET\\_REG" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_get_reg \-\- get register contents @@ -38,22 +40,22 @@ and stores the value in the word pointed to by valp\&. .PP -The register numbering is target\-dependent and described in separate -manual pages (e.g., libunwind\-ia64(3) for the IA\-64 target). +The register numbering is target dependent and described in separate +manual pages (e.g., libunwind\-ia64(3libunwind) for the IA\-64 target). Furthermore, the exact set of accessible registers may depend on the type of frame that cp is referring to. For ordinary stack frames, it is normally possible to access only the preserved (``callee\-saved\&'') registers and frame\-related registers (such as the stack\-pointer). However, for signal frames (see -unw_is_signal_frame(3)), +unw_is_signal_frame(3libunwind)), it is usually possible to access all registers. .PP Note that unw_get_reg() can only read the contents of registers whose values fit in a single word. See -unw_get_fpreg(3) +unw_get_fpreg(3libunwind) for a way to read registers which do not fit this constraint. .PP @@ -62,14 +64,14 @@ .PP On successful completion, unw_get_reg() returns 0. -Otherwise the negative value of one of the error\-codes below is +Otherwise the negative value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_get_reg() -is thread\-safe as well as safe to use +is thread safe as well as safe to use from a signal handler. .PP .SH ERRORS @@ -89,17 +91,17 @@ access_reg(), and access_fpreg() -call\-backs (see -unw_create_addr_space(3)). +callbacks (see +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -libunwind\-ia64(3), -unw_get_fpreg(3), -unw_is_signal_frame(3), -unw_set_reg(3) +libunwind(3libunwind), +libunwind\-ia64(3libunwind), +unw_get_fpreg(3libunwind), +unw_is_signal_frame(3libunwind), +unw_set_reg(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_get_reg.tex libunwind-1.8.1/doc/unw_get_reg.tex --- libunwind-1.7.2/doc/unw_get_reg.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_get_reg.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_get\_reg}{David Mosberger-Tang}{Programming Library}{unw\_get\_reg}unw\_get\_reg -- get register contents +\begin{Name}{3libunwind}{unw\_get\_reg}{David Mosberger-Tang}{Programming Library}{unw\_get\_reg}unw\_get\_reg -- get register contents \end{Name} \section{Synopsis} @@ -20,30 +20,30 @@ \Var{reg} in the stack frame identified by cursor \Var{cp} and stores the value in the word pointed to by \Var{valp}. -The register numbering is target-dependent and described in separate -manual pages (e.g., libunwind-ia64(3) for the IA-64 target). +The register numbering is target dependent and described in separate +manual pages (e.g., libunwind-ia64(3libunwind) for the IA-64 target). Furthermore, the exact set of accessible registers may depend on the type of frame that \Var{cp} is referring to. For ordinary stack frames, it is normally possible to access only the preserved (``callee-saved'') registers and frame-related registers (such as the stack-pointer). However, for signal frames (see -\Func{unw\_is\_signal\_frame}(3)), it is usually possible to access +\Func{unw\_is\_signal\_frame}(3libunwind)), it is usually possible to access all registers. Note that \Func{unw\_get\_reg}() can only read the contents of registers whose values fit in a single word. See -\Func{unw\_get\_fpreg}(3) for a way to read registers which do not fit +\Func{unw\_get\_fpreg}(3libunwind) for a way to read registers which do not fit this constraint. \section{Return Value} On successful completion, \Func{unw\_get\_reg}() returns 0. -Otherwise the negative value of one of the error-codes below is +Otherwise the negative value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_get\_reg}() is thread-safe as well as safe to use +\Func{unw\_get\_reg}() is thread safe as well as safe to use from a signal handler. \section{Errors} @@ -55,16 +55,16 @@ \end{Description} In addition, \Func{unw\_get\_reg}() may return any error returned by the \Func{access\_mem}(), \Func{access\_reg}(), and -\Func{access\_fpreg}() call-backs (see -\Func{unw\_create\_addr\_space}(3)). +\Func{access\_fpreg}() callbacks (see +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{libunwind-ia64(3)}, -\SeeAlso{unw\_get\_fpreg(3)}, -\SeeAlso{unw\_is\_signal\_frame(3)}, -\SeeAlso{unw\_set\_reg(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{libunwind-ia64}(3libunwind), +\SeeAlso{unw\_get\_fpreg}(3libunwind), +\SeeAlso{unw\_is\_signal\_frame}(3libunwind), +\SeeAlso{unw\_set\_reg}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_getcontext.man libunwind-1.8.1/doc/unw_getcontext.man --- libunwind-1.7.2/doc/unw_getcontext.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_getcontext.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 12:09:48 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_GETCONTEXT" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_GETCONTEXT" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_getcontext \-\- get initial machine\-state @@ -31,12 +33,12 @@ The unw_getcontext() routine initializes the context structure pointed to by ucp -with the machine\-state of the call\-site. The +with the machine state of the call site. The exact set of registers stored by unw_getcontext() is platform\-specific, but, in general, at least all preserved (``callee\-saved\&'') and all frame\-related registers, such as the -stack\-pointer, will be stored. +stack pointer, will be stored. .PP This routine is normally implemented as a macro and applications should not attempt to take its address. @@ -73,14 +75,14 @@ .PP unw_getcontext() -is thread\-safe as well as safe to use +is thread safe as well as safe to use from a signal handler. .PP .SH SEE ALSO .PP -libunwind(3), -unw_init_local(3) +libunwind(3libunwind), +unw_init_local(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_getcontext.tex libunwind-1.8.1/doc/unw_getcontext.tex --- libunwind-1.7.2/doc/unw_getcontext.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_getcontext.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_getcontext}{David Mosberger-Tang}{Programming Library}{unw\_getcontext}unw\_getcontext -- get initial machine-state +\begin{Name}{3libunwind}{unw\_getcontext}{David Mosberger-Tang}{Programming Library}{unw\_getcontext}unw\_getcontext -- get initial machine-state \end{Name} \section{Synopsis} @@ -17,11 +17,11 @@ \section{Description} The \Func{unw\_getcontext}() routine initializes the context structure -pointed to by \Var{ucp} with the machine-state of the call-site. The +pointed to by \Var{ucp} with the machine state of the call site. The exact set of registers stored by \Func{unw\_getcontext}() is platform-specific, but, in general, at least all preserved (``callee-saved'') and all frame-related registers, such as the -stack-pointer, will be stored. +stack pointer, will be stored. This routine is normally implemented as a macro and applications should not attempt to take its address. @@ -44,13 +44,13 @@ \section{Thread and Signal Safety} -\Func{unw\_getcontext}() is thread-safe as well as safe to use +\Func{unw\_getcontext}() is thread safe as well as safe to use from a signal handler. \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_init\_local(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_init\_local}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_init_local.man libunwind-1.8.1/doc/unw_init_local.man --- libunwind-1.7.2/doc/unw_init_local.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_init_local.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Sun Aug 29 23:45:06 CEST 2021 +.\" Manual page created with latex2man on Tue Aug 29 11:41:44 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_INIT\\_LOCAL" "3" "29 August 2021" "Programming Library " "Programming Library " +.TH "UNW\\_INIT\\_LOCAL" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_init_local \-\- initialize cursor for local unwinding @@ -38,18 +40,18 @@ The unw_init_local() routine initializes the unwind cursor pointed to by c -with the machine\-state in the context structure +with the machine state in the context structure pointed to by ctxt\&. -As such, the machine\-state pointed to by +As such, the machine state pointed to by ctxt identifies the initial stack frame at which unwinding -starts. The machine\-state is expected to be one provided by a call to +starts. The machine state is expected to be one provided by a call to unw_getcontext(); as such, the instruction pointer may point to the instruction after the last instruction of a function, and libunwind will back\-up the instruction pointer before beginning -a walk up the call stack. The machine\-state must remain valid for the +a walk up the call stack. The machine state must remain valid for the duration for which the cursor c is in use. .PP @@ -81,14 +83,14 @@ .PP On successful completion, unw_init_local() returns 0. -Otherwise the negative value of one of the error\-codes below is +Otherwise the negative value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_init_local() -is thread\-safe as well as safe to use from a +is thread safe as well as safe to use from a signal handler. .PP .SH ERRORS @@ -114,8 +116,8 @@ .SH SEE ALSO .PP -libunwind(3), -unw_init_remote(3) +libunwind(3libunwind), +unw_init_remote(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_init_local.tex libunwind-1.8.1/doc/unw_init_local.tex --- libunwind-1.7.2/doc/unw_init_local.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_init_local.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_init\_local}{David Mosberger-Tang}{Programming Library}{unw\_init\_local}unw\_init\_local -- initialize cursor for local unwinding +\begin{Name}{3libunwind}{unw\_init\_local}{David Mosberger-Tang}{Programming Library}{unw\_init\_local}unw\_init\_local -- initialize cursor for local unwinding \end{Name} \section{Synopsis} @@ -18,14 +18,14 @@ \section{Description} The \Func{unw\_init\_local}() routine initializes the unwind cursor -pointed to by \Var{c} with the machine-state in the context structure -pointed to by \Var{ctxt}. As such, the machine-state pointed to by +pointed to by \Var{c} with the machine state in the context structure +pointed to by \Var{ctxt}. As such, the machine state pointed to by \Var{ctxt} identifies the initial stack frame at which unwinding -starts. The machine-state is expected to be one provided by a call to +starts. The machine state is expected to be one provided by a call to \Func{unw\_getcontext}(); as such, the instruction pointer may point to the instruction after the last instruction of a function, and \Prog{libunwind} will back-up the instruction pointer before beginning -a walk up the call stack. The machine-state must remain valid for the +a walk up the call stack. The machine state must remain valid for the duration for which the cursor \Var{c} is in use. The \Func{unw\_init\_local}() routine can be used only for unwinding in @@ -45,12 +45,12 @@ \section{Return Value} On successful completion, \Func{unw\_init\_local}() returns 0. -Otherwise the negative value of one of the error-codes below is +Otherwise the negative value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_init\_local}() is thread-safe as well as safe to use from a +\Func{unw\_init\_local}() is thread safe as well as safe to use from a signal handler. \section{Errors} @@ -67,7 +67,8 @@ \section{See Also} -\SeeAlso{libunwind(3)}, \SeeAlso{unw\_init\_remote(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_init\_remote}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_init_remote.man libunwind-1.8.1/doc/unw_init_remote.man --- libunwind-1.7.2/doc/unw_init_remote.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_init_remote.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 11:41:44 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_INIT\\_REMOTE" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_INIT\\_REMOTE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_init_remote \-\- initialize cursor for remote unwinding @@ -42,18 +44,18 @@ address space created with unw_create_addr_space(). .PP The arg -void\-pointer tells the address space exactly what entity +opaque pointer tells the address space exactly what entity should be unwound. For example, if unw_local_addr_space is passed in as, then arg needs to be a pointer to a context structure containing the machine\-state of the initial stack frame. -However, other address\-spaces may instead expect a process\-id, a -thread\-id, or a pointer to an arbitrary structure which identifies the -stack\-frame chain to be unwound. In other words, the interpretation +However, other address spaces may instead expect a process ID, a +thread ID, or a pointer to an arbitrary structure which identifies the +stack frame chain to be unwound. In other words, the interpretation of arg -is entirely dependent on the address\-space in use; +is entirely dependent on the address space in use; libunwind never interprets the argument in any way on its own. .PP @@ -78,7 +80,7 @@ .PP unw_init_remote() -is thread\-safe. If the local address\-space +is thread safe. If the local address space is passed in argument as, this routine is also safe to use from a signal handler. @@ -108,9 +110,9 @@ .SH SEE ALSO .PP -libunwind(3), -unw_create_addr_space(3), -unw_init_local(3) +libunwind(3libunwind), +unw_create_addr_space(3libunwind), +unw_init_local(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_init_remote.tex libunwind-1.8.1/doc/unw_init_remote.tex --- libunwind-1.7.2/doc/unw_init_remote.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_init_remote.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_init\_remote}{David Mosberger-Tang}{Programming Library}{unw\_init\_remote}unw\_init\_remote -- initialize cursor for remote unwinding +\begin{Name}{3libunwind}{unw\_init\_remote}{David Mosberger-Tang}{Programming Library}{unw\_init\_remote}unw\_init\_remote -- initialize cursor for remote unwinding \end{Name} \section{Synopsis} @@ -22,14 +22,14 @@ \Var{unw\_local\_addr\_space} (local address space) or to an arbitrary address space created with \Func{unw\_create\_addr\_space}(). -The \Var{arg} void-pointer tells the address space exactly what entity +The \Var{arg} opaque pointer tells the address space exactly what entity should be unwound. For example, if \Var{unw\_local\_addr\_space} is passed in \Var{as}, then \Var{arg} needs to be a pointer to a context structure containing the machine-state of the initial stack frame. -However, other address-spaces may instead expect a process-id, a -thread-id, or a pointer to an arbitrary structure which identifies the -stack-frame chain to be unwound. In other words, the interpretation -of \Var{arg} is entirely dependent on the address-space in use; +However, other address spaces may instead expect a process ID, a +thread ID, or a pointer to an arbitrary structure which identifies the +stack frame chain to be unwound. In other words, the interpretation +of \Var{arg} is entirely dependent on the address space in use; \Prog{libunwind} never interprets the argument in any way on its own. Note that \Func{unw\_init\_remote}() can be used to initiate unwinding @@ -46,7 +46,7 @@ \section{Thread and Signal Safety} -\Func{unw\_init\_remote}() is thread-safe. If the local address-space +\Func{unw\_init\_remote}() is thread safe. If the local address space is passed in argument \Var{as}, this routine is also safe to use from a signal handler. @@ -65,8 +65,9 @@ \section{See Also} -\SeeAlso{libunwind(3)}, \SeeAlso{unw\_create\_addr\_space(3)}, -\SeeAlso{unw\_init\_local(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{unw\_init\_local}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_is_fpreg.man libunwind-1.8.1/doc/unw_is_fpreg.man --- libunwind-1.7.2/doc/unw_is_fpreg.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_is_fpreg.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 11:41:44 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_IS\\_FPREG" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_IS\\_FPREG" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_is_fpreg \-\- check if a register is a floating\-point register @@ -50,17 +52,17 @@ .PP unw_is_fpreg() -is thread\-safe as well as safe to use +is thread safe as well as safe to use from a signal handler. .PP .SH SEE ALSO .PP -libunwind(3), -unw_get_reg(3), -unw_set_reg(3), -unw_get_fpreg(3), -unw_set_fpreg(3) +libunwind(3libunwind), +unw_get_reg(3libunwind), +unw_set_reg(3libunwind), +unw_get_fpreg(3libunwind), +unw_set_fpreg(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_is_fpreg.tex libunwind-1.8.1/doc/unw_is_fpreg.tex --- libunwind-1.7.2/doc/unw_is_fpreg.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_is_fpreg.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_is\_fpreg}{David Mosberger-Tang}{Programming Library}{unw\_is\_fpreg}unw\_is\_fpreg -- check if a register is a floating-point register +\begin{Name}{3libunwind}{unw\_is\_fpreg}{David Mosberger-Tang}{Programming Library}{unw\_is\_fpreg}unw\_is\_fpreg -- check if a register is a floating-point register \end{Name} \section{Synopsis} @@ -30,16 +30,16 @@ \section{Thread and Signal Safety} -\Func{unw\_is\_fpreg}() is thread-safe as well as safe to use +\Func{unw\_is\_fpreg}() is thread safe as well as safe to use from a signal handler. \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_get\_reg(3)}, -\SeeAlso{unw\_set\_reg(3)}, -\SeeAlso{unw\_get\_fpreg(3)}, -\SeeAlso{unw\_set\_fpreg(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_get\_reg}(3libunwind), +\SeeAlso{unw\_set\_reg}(3libunwind), +\SeeAlso{unw\_get\_fpreg}(3libunwind), +\SeeAlso{unw\_set\_fpreg}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_is_signal_frame.man libunwind-1.8.1/doc/unw_is_signal_frame.man --- libunwind-1.7.2/doc/unw_is_signal_frame.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_is_signal_frame.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 11:06:25 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_IS\\_SIGNAL\\_FRAME" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_IS\\_SIGNAL\\_FRAME" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_is_signal_frame \-\- check if current frame is a signal frame @@ -31,12 +33,15 @@ The unw_is_signal_frame() routine returns a positive value if the current frame identified by cp -is a signal frame, and a -value of 0 otherwise. For the purpose of this discussion, a signal -frame is a frame that was created in response to a potentially -asynchronous interruption. For UNIX and UNIX\-like platforms, such -frames are normally created by the kernel when delivering a signal. -In a kernel\-environment, a signal frame might, for example, correspond +is a signal frame, +also known as a signal trampoline, +and a value of 0 otherwise. +For the purpose of this discussion, +a signal frame is a frame that was created in response to a potentially +asynchronous interruption. +For UNIX and UNIX\-like platforms, +such frames are normally created by the kernel when delivering a signal. +In a kernel environment, a signal frame might, for example, correspond to a frame created in response to a device interrupt. .PP Signal frames are somewhat unusual because the asynchronous nature of @@ -49,14 +54,14 @@ On successful completion, unw_is_signal_frame() returns a positive value if the current frame is a signal frame, or 0 if it is -not. Otherwise, a negative value of one of the error\-codes below is +not. Otherwise, a negative value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_is_signal_frame() -is thread\-safe as well as safe to use +is thread safe as well as safe to use from a signal handler. .PP .SH ERRORS @@ -71,11 +76,11 @@ .SH SEE ALSO .PP -libunwind(3), -unw_get_reg(3), -unw_set_reg(3), -unw_get_fpreg(3), -unw_set_fpreg(3) +libunwind(3libunwind), +unw_get_reg(3libunwind), +unw_set_reg(3libunwind), +unw_get_fpreg(3libunwind), +unw_set_fpreg(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_is_signal_frame.tex libunwind-1.8.1/doc/unw_is_signal_frame.tex --- libunwind-1.7.2/doc/unw_is_signal_frame.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_is_signal_frame.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_is\_signal\_frame}{David Mosberger-Tang}{Programming Library}{unw\_is\_signal\_frame}unw\_is\_signal\_frame -- check if current frame is a signal frame +\begin{Name}{3libunwind}{unw\_is\_signal\_frame}{David Mosberger-Tang}{Programming Library}{unw\_is\_signal\_frame}unw\_is\_signal\_frame -- check if current frame is a signal frame \end{Name} \section{Synopsis} @@ -17,12 +17,15 @@ \section{Description} The \Func{unw\_is\_signal\_frame}() routine returns a positive value -if the current frame identified by \Var{cp} is a signal frame, and a -value of 0 otherwise. For the purpose of this discussion, a signal -frame is a frame that was created in response to a potentially -asynchronous interruption. For UNIX and UNIX-like platforms, such -frames are normally created by the kernel when delivering a signal. -In a kernel-environment, a signal frame might, for example, correspond +if the current frame identified by \Var{cp} is a signal frame, +also known as a signal trampoline, +and a value of 0 otherwise. +For the purpose of this discussion, +a signal frame is a frame that was created in response to a potentially +asynchronous interruption. +For UNIX and UNIX-like platforms, +such frames are normally created by the kernel when delivering a signal. +In a kernel environment, a signal frame might, for example, correspond to a frame created in response to a device interrupt. Signal frames are somewhat unusual because the asynchronous nature of @@ -33,12 +36,12 @@ On successful completion, \Func{unw\_is\_signal\_frame}() returns a positive value if the current frame is a signal frame, or 0 if it is -not. Otherwise, a negative value of one of the error-codes below is +not. Otherwise, a negative value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_is\_signal\_frame}() is thread-safe as well as safe to use +\Func{unw\_is\_signal\_frame}() is thread safe as well as safe to use from a signal handler. \section{Errors} @@ -50,11 +53,11 @@ \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_get\_reg(3)}, -\SeeAlso{unw\_set\_reg(3)}, -\SeeAlso{unw\_get\_fpreg(3)}, -\SeeAlso{unw\_set\_fpreg(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_get\_reg}(3libunwind), +\SeeAlso{unw\_set\_reg}(3libunwind), +\SeeAlso{unw\_get\_fpreg}(3libunwind), +\SeeAlso{unw\_set\_fpreg}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_reg_states_iterate.man libunwind-1.8.1/doc/unw_reg_states_iterate.man --- libunwind-1.7.2/doc/unw_reg_states_iterate.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_reg_states_iterate.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Sun Aug 29 23:45:06 CEST 2021 +.\" Manual page created with latex2man on Tue Aug 29 11:41:44 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_REG\\_STATES\\_ITERATE" "3" "29 August 2021" "Programming Library " "Programming Library " +.TH "UNW\\_REG\\_STATES\\_ITERATE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_reg_states_iterate \-\- get register state info on current procedure @@ -87,15 +89,15 @@ returns 0. If the callback function returns a nonzero value, that indicates failure and the function returns immediately. Otherwise the negative -value of one of the error\-codes below is returned. +value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_reg_states_iterate() -is thread\-safe. If cursor cp +is thread safe. If cursor cp is -in the local address\-space, this routine is also safe to use from a +in the local address space, this routine is also safe to use from a signal handler. .PP .SH ERRORS @@ -118,13 +120,13 @@ may return any error returned by the access_mem() call\-back (see -unw_create_addr_space(3)). +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -unw_apply_reg_state(3) +libunwind(3libunwind), +unw_apply_reg_state(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_reg_states_iterate.tex libunwind-1.8.1/doc/unw_reg_states_iterate.tex --- libunwind-1.7.2/doc/unw_reg_states_iterate.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_reg_states_iterate.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_reg\_states\_iterate}{David Mosberger-Tang}{Programming Library}{unw\_reg\_states\_iterate}unw\_reg\_states\_iterate -- get register state info on current procedure +\begin{Name}{3libunwind}{unw\_reg\_states\_iterate}{David Mosberger-Tang}{Programming Library}{unw\_reg\_states\_iterate}unw\_reg\_states\_iterate -- get register state info on current procedure \end{Name} \section{Synopsis} @@ -46,12 +46,12 @@ On successful completion, \Func{unw\_reg\_states\_iterate}() returns 0. If the callback function returns a nonzero value, that indicates failure and the function returns immediately. Otherwise the negative -value of one of the error-codes below is returned. +value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_reg\_states\_iterate}() is thread-safe. If cursor \Var{cp} is -in the local address-space, this routine is also safe to use from a +\Func{unw\_reg\_states\_iterate}() is thread safe. If cursor \Var{cp} is +in the local address space, this routine is also safe to use from a signal handler. \section{Errors} @@ -65,12 +65,12 @@ \end{Description} In addition, \Func{unw\_reg\_states\_iterate}() may return any error returned by the \Func{access\_mem}() call-back (see -\Func{unw\_create\_addr\_space}(3)). +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_apply\_reg\_state(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_apply\_reg\_state}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_regname.man libunwind-1.8.1/doc/unw_regname.man --- libunwind-1.7.2/doc/unw_regname.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_regname.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 11:41:44 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_REGNAME" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_REGNAME" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_regname \-\- get register name @@ -49,13 +51,13 @@ .PP The unw_regname() -routine is thread\-safe as well as safe to +routine is thread safe as well as safe to use from a signal handler. .PP .SH SEE ALSO .PP -libunwind(3) +libunwind(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_regname.tex libunwind-1.8.1/doc/unw_regname.tex --- libunwind-1.7.2/doc/unw_regname.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_regname.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_regname}{David Mosberger-Tang}{Programming Library}{unw\_regname}unw\_regname -- get register name +\begin{Name}{3libunwind}{unw\_regname}{David Mosberger-Tang}{Programming Library}{unw\_regname}unw\_regname -- get register name \end{Name} \section{Synopsis} @@ -29,12 +29,12 @@ \section{Thread and Signal Safety} -The \Func{unw\_regname}() routine is thread-safe as well as safe to +The \Func{unw\_regname}() routine is thread safe as well as safe to use from a signal handler. \section{See Also} -\SeeAlso{libunwind(3)} +\SeeAlso{libunwind}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_resume.man libunwind-1.8.1/doc/unw_resume.man --- libunwind-1.7.2/doc/unw_resume.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_resume.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 11:41:44 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_RESUME" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_RESUME" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_resume \-\- resume execution in a particular stack frame @@ -86,7 +88,7 @@ will have to do so on its own by obtaining the unw_proc_info_t of each unwound frame and appropriately processing its unwind handler and language\-specific data area (lsda). These steps are generally -dependent on the target\-platform and are regulated by the +dependent on the target platform and are regulated by the processor\-specific ABI (application\-binary interface). .PP .SH RETURN VALUE @@ -131,9 +133,9 @@ .SH SEE ALSO .PP -libunwind(3), -unw_set_reg(3), -sigprocmask(2) +libunwind(3libunwind), +unw_set_reg(3libunwind), +sigprocmask(2) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_resume.tex libunwind-1.8.1/doc/unw_resume.tex --- libunwind-1.7.2/doc/unw_resume.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_resume.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_resume}{David Mosberger-Tang}{Programming Library}{unw\_resume}unw\_resume -- resume execution in a particular stack frame +\begin{Name}{3libunwind}{unw\_resume}{David Mosberger-Tang}{Programming Library}{unw\_resume}unw\_resume -- resume execution in a particular stack frame \end{Name} \section{Synopsis} @@ -55,7 +55,7 @@ will have to do so on its own by obtaining the \Type{unw\_proc\_info\_t} of each unwound frame and appropriately processing its unwind handler and language-specific data area (lsda). These steps are generally -dependent on the target-platform and are regulated by the +dependent on the target platform and are regulated by the processor-specific ABI (application-binary interface). \section{Return Value} @@ -84,9 +84,9 @@ \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_set\_reg(3)}, -sigprocmask(2) +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_set\_reg}(3libunwind), +\SeeAlso{sigprocmask}(2) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_set_cache_size.man libunwind-1.8.1/doc/unw_set_cache_size.man --- libunwind-1.7.2/doc/unw_set_cache_size.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_cache_size.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Fri Jan 13 08:33:21 PST 2017 +.\" Manual page created with latex2man on Tue Aug 29 11:41:44 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_SET\\_CACHE\\_SIZE" "3" "13 January 2017" "Programming Library " "Programming Library " +.TH "UNW\\_SET\\_CACHE\\_SIZE" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_set_cache_size \-\- set unwind cache size @@ -72,10 +74,10 @@ .SH SEE ALSO .PP -libunwind(3), -unw_create_addr_space(3), -unw_set_caching_policy(3), -unw_flush_cache(3) +libunwind(3libunwind), +unw_create_addr_space(3libunwind), +unw_set_caching_policy(3libunwind), +unw_flush_cache(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_set_cache_size.tex libunwind-1.8.1/doc/unw_set_cache_size.tex --- libunwind-1.7.2/doc/unw_set_cache_size.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_cache_size.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_set\_cache\_size}{Dave Watson}{Programming Library}{unw\_set\_cache\_size}unw\_set\_cache\_size -- set unwind cache size +\begin{Name}{3libunwind}{unw\_set\_cache\_size}{Dave Watson}{Programming Library}{unw\_set\_cache\_size}unw\_set\_cache\_size -- set unwind cache size \end{Name} \section{Synopsis} @@ -43,10 +43,10 @@ \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_create\_addr\_space(3)}, -\SeeAlso{unw\_set\_caching\_policy(3)}, -\SeeAlso{unw\_flush\_cache(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{unw\_set\_caching\_policy}(3libunwind), +\SeeAlso{unw\_flush\_cache}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_set_caching_policy.man libunwind-1.8.1/doc/unw_set_caching_policy.man --- libunwind-1.7.2/doc/unw_set_caching_policy.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_caching_policy.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Fri Dec 2 16:09:33 PST 2016 +.\" Manual page created with latex2man on Tue Aug 29 11:41:44 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_SET\\_CACHING\\_POLICY" "3" "02 December 2016" "Programming Library " "Programming Library " +.TH "UNW\\_SET\\_CACHING\\_POLICY" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_set_caching_policy \-\- set unwind caching policy @@ -71,7 +73,7 @@ would have to be called (at least) for the address\-range that was covered by the shared library. .PP -For address spaces created via unw_create_addr_space(3), +For address spaces created via unw_create_addr_space(3libunwind), caching is turned off by default. For the local address space unw_local_addr_space, caching is turned on by default. @@ -103,10 +105,10 @@ .SH SEE ALSO .PP -libunwind(3), -unw_create_addr_space(3), -unw_set_cache_size(3), -unw_flush_cache(3) +libunwind(3libunwind), +unw_create_addr_space(3libunwind), +unw_set_cache_size(3libunwind), +unw_flush_cache(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_set_caching_policy.tex libunwind-1.8.1/doc/unw_set_caching_policy.tex --- libunwind-1.7.2/doc/unw_set_caching_policy.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_caching_policy.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_set\_caching\_policy}{David Mosberger-Tang}{Programming Library}{unw\_set\_caching\_policy}unw\_set\_caching\_policy -- set unwind caching policy +\begin{Name}{3libunwind}{unw\_set\_caching\_policy}{David Mosberger-Tang}{Programming Library}{unw\_set\_caching\_policy}unw\_set\_caching\_policy -- set unwind caching policy \end{Name} \section{Synopsis} @@ -41,7 +41,7 @@ \Func{unw\_flush\_cache}() would have to be called (at least) for the address-range that was covered by the shared library. -For address spaces created via \Func{unw\_create\_addr\_space}(3), +For address spaces created via \Func{unw\_create\_addr\_space}(3libunwind), caching is turned off by default. For the local address space \Func{unw\_local\_addr\_space}, caching is turned on by default. @@ -65,10 +65,10 @@ \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_create\_addr\_space(3)}, -\SeeAlso{unw\_set\_cache\_size(3)}, -\SeeAlso{unw\_flush\_cache(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{unw\_set\_cache\_size}(3libunwind), +\SeeAlso{unw\_flush\_cache}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_set_fpreg.man libunwind-1.8.1/doc/unw_set_fpreg.man --- libunwind-1.7.2/doc/unw_set_fpreg.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_fpreg.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 11:06:25 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_SET\\_FPREG" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_SET\\_FPREG" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_set_fpreg \-\- set contents of floating\-point register @@ -40,20 +42,20 @@ value passed in val\&. .PP The register numbering is target\-dependent and described in separate -manual pages (e.g., libunwind\-ia64(3) for the IA\-64 target). +manual pages (e.g., libunwind\-ia64(3libunwind) for the IA\-64 target). Furthermore, the exact set of accessible registers may depend on the type of frame that cp is referring to. For ordinary stack frames, it is normally possible to access only the preserved (``callee\-saved\&'') registers and frame\-related registers (such as the stack\-pointer). However, for signal frames (see -unw_is_signal_frame(3)), +unw_is_signal_frame(3libunwind)), it is usually possible to access all registers. .PP Note that unw_set_fpreg() can only write the contents of -floating\-point registers. See unw_set_reg(3) +floating\-point registers. See unw_set_reg(3libunwind) for a way to write registers which fit in a single word. .PP @@ -62,14 +64,14 @@ .PP On successful completion, unw_set_fpreg() returns 0. -Otherwise the negative value of one of the error\-codes below is +Otherwise the negative value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY .PP unw_set_fpreg() -is thread\-safe as well as safe to use +is thread safe as well as safe to use from a signal handler. .PP .SH ERRORS @@ -93,18 +95,18 @@ access_reg(), and access_fpreg() -call\-backs (see -unw_create_addr_space(3)). +callbacks (see +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -libunwind\-ia64(3), -unw_get_fpreg(3), -unw_is_fpreg(3), -unw_is_signal_frame(3), -unw_set_reg(3) +libunwind(3libunwind), +libunwind\-ia64(3libunwind), +unw_get_fpreg(3libunwind), +unw_is_fpreg(3libunwind), +unw_is_signal_frame(3libunwind), +unw_set_reg(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_set_fpreg.tex libunwind-1.8.1/doc/unw_set_fpreg.tex --- libunwind-1.7.2/doc/unw_set_fpreg.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_fpreg.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_set\_fpreg}{David Mosberger-Tang}{Programming Library}{unw\_set\_fpreg}unw\_set\_fpreg -- set contents of floating-point register +\begin{Name}{3libunwind}{unw\_set\_fpreg}{David Mosberger-Tang}{Programming Library}{unw\_set\_fpreg}unw\_set\_fpreg -- set contents of floating-point register \end{Name} \section{Synopsis} @@ -21,28 +21,28 @@ value passed in \Var{val}. The register numbering is target-dependent and described in separate -manual pages (e.g., libunwind-ia64(3) for the IA-64 target). +manual pages (e.g., libunwind-ia64(3libunwind) for the IA-64 target). Furthermore, the exact set of accessible registers may depend on the type of frame that \Var{cp} is referring to. For ordinary stack frames, it is normally possible to access only the preserved (``callee-saved'') registers and frame-related registers (such as the stack-pointer). However, for signal frames (see -\Func{unw\_is\_signal\_frame}(3)), it is usually possible to access +\Func{unw\_is\_signal\_frame}(3libunwind)), it is usually possible to access all registers. Note that \Func{unw\_set\_fpreg}() can only write the contents of -floating-point registers. See \Func{unw\_set\_reg}(3) for a way to +floating-point registers. See \Func{unw\_set\_reg}(3libunwind) for a way to write registers which fit in a single word. \section{Return Value} On successful completion, \Func{unw\_set\_fpreg}() returns 0. -Otherwise the negative value of one of the error-codes below is +Otherwise the negative value of one of the error codes below is returned. \section{Thread and Signal Safety} -\Func{unw\_set\_fpreg}() is thread-safe as well as safe to use +\Func{unw\_set\_fpreg}() is thread safe as well as safe to use from a signal handler. \section{Errors} @@ -56,17 +56,17 @@ \end{Description} In addition, \Func{unw\_set\_fpreg}() may return any error returned by the \Func{access\_mem}(), \Func{access\_reg}(), and -\Func{access\_fpreg}() call-backs (see -\Func{unw\_create\_addr\_space}(3)). +\Func{access\_fpreg}() callbacks (see +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{libunwind-ia64(3)}, -\SeeAlso{unw\_get\_fpreg(3)}, -\SeeAlso{unw\_is\_fpreg(3)}, -\SeeAlso{unw\_is\_signal\_frame(3)}, -\SeeAlso{unw\_set\_reg(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{libunwind-ia64}(3libunwind), +\SeeAlso{unw\_get\_fpreg}(3libunwind), +\SeeAlso{unw\_is\_fpreg}(3libunwind), +\SeeAlso{unw\_is\_signal\_frame}(3libunwind), +\SeeAlso{unw\_set\_reg}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_set_iterate_phdr_function.man libunwind-1.8.1/doc/unw_set_iterate_phdr_function.man --- libunwind-1.7.2/doc/unw_set_iterate_phdr_function.man 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_iterate_phdr_function.man 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,83 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} +'\" t +.\" Manual page created with latex2man on Tue Aug 29 11:10:10 2023 +.\" NOTE: This file is generated, DO NOT EDIT. +.de Vb +.ft CW +.nf +.. +.de Ve +.ft R + +.fi +.. +.TH "UNW\\_SET\\_ITERATE\\_PHDR\\_FUNCTION" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " +.SH NAME +unw_set_iterate_phdr_function +\-\- set dl_iterate_phdr +implementation +.PP +.SH SYNOPSIS + +.PP +#include +.br +.PP +typedef int +(*unw_iterate_phdr_callback_t)(struct dl_phdr_info *, +size_t, +void *); +.br +typedef int +(*unw_iterate_phdr_func_t)(unw_iterate_phdr_callback_t, +void *); +.br +.PP +void +unw_set_iterate_phdr_function(unw_addr_space_t +as, +unw_iterate_phdr_func_t +function); +.br +.PP +.SH DESCRIPTION + +.PP +The unw_set_iterate_phdr_function() +routine sets the dl_iterate_phdr +implementation of address space as +to the function by argument function\&. +The function +will be called whenever libunwind +needs to iterate over the program headers of the application. +This is normally done by calling dl_iterate_phdr, +but this function is not signal safe. +With the help of a custom implementation caching and iterating over the program headers is also possible in an signal\-safe manner. +Though the burden lies on the user of libunwind\&. +.PP +.SH THREAD AND SIGNAL SAFETY + +.PP +unw_set_iterate_phdr_function() +is thread safe. If the local address space +is passed in argument as, +this routine is also safe to use from +a signal handler. +.PP +.SH SEE ALSO + +.PP +libunwind(3libunwind), +unw_create_addr_space(3libunwind), +dl_iterate_phdr(3libunwind), +.PP +.SH AUTHOR + +.PP +Bert Wesarg +.br +Email: \fBbert.wesarg@googlemail.com\fP +.br +WWW: \fBhttp://www.nongnu.org/libunwind/\fP\&. +.\" NOTE: This file is generated, DO NOT EDIT. diff -Nru libunwind-1.7.2/doc/unw_set_iterate_phdr_function.tex libunwind-1.8.1/doc/unw_set_iterate_phdr_function.tex --- libunwind-1.7.2/doc/unw_set_iterate_phdr_function.tex 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_iterate_phdr_function.tex 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,57 @@ +\documentclass{article} +\usepackage[fancyhdr,pdf]{latex2man} + +\input{common.tex} + +\begin{document} + +\begin{Name}{3libunwind}{unw\_set\_iterate\_phdr\_function}{Bert Wesarg}{Programming Library}{unw\_set\_iterate\_phdr\_function}unw\_set\_iterate\_phdr\_function -- set \Func{dl\_iterate\_phdr} implementation +\end{Name} + +\section{Synopsis} + + +\File{\#include $<$libunwind.h$>$}\\ + +\noindent +\Type{typedef~int} +\Func{(*unw\_iterate\_phdr\_callback\_t)}(\Type{struct~dl\_phdr\_info~*}, + \Type{size\_t}, \Type{void~*});\\ +\noindent +\Type{typedef~int} \Func{(*unw\_iterate\_phdr\_func\_t)}(\Type{unw\_iterate\_phdr\_callback\_t}, + \Type{void~*});\\ + +\noindent +\Type{void} \Func{unw\_set\_iterate\_phdr\_function}(\Type{unw\_addr\_space\_t} + \Var{as}, \Type{unw\_iterate\_phdr\_func\_t} \Var{function});\\ + +\section{Description} + +The \Func{unw\_set\_iterate\_phdr\_function}() routine sets the \Func{dl\_iterate\_phdr} implementation of address space \Var{as} to the function by argument \Var{function}. +The \Var{function} will be called whenever \Prog{libunwind} needs to iterate over the program headers of the application. +This is normally done by calling \Func{dl\_iterate\_phdr}, but this function is not signal safe. +With the help of a custom implementation caching and iterating over the program headers is also possible in an signal-safe manner. +Though the burden lies on the user of \Prog{libunwind}. + +\section{Thread and Signal Safety} + +\Func{unw\_set\_iterate\_phdr\_function}() is thread safe. If the local address space +is passed in argument \Var{as}, this routine is also safe to use from +a signal handler. + + +\section{See Also} + +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind), +\SeeAlso{dl\_iterate\_phdr}(3libunwind), + +\section{Author} + +\noindent +Bert Wesarg\\ +Email: \Email{bert.wesarg@googlemail.com}\\ +WWW: \URL{http://www.nongnu.org/libunwind/}. +\LatexManEnd + +\end{document} diff -Nru libunwind-1.7.2/doc/unw_set_reg.man libunwind-1.8.1/doc/unw_set_reg.man --- libunwind-1.7.2/doc/unw_set_reg.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_reg.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 11:06:25 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_SET\\_REG" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_SET\\_REG" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_set_reg \-\- set register contents @@ -39,22 +41,22 @@ to the value passed in val\&. .PP -The register numbering is target\-dependent and described in separate -manual pages (e.g., libunwind\-ia64(3) for the IA\-64 target). +The register numbering is target dependent and described in separate +manual pages (e.g., libunwind\-ia64(3libunwind) for the IA\-64 target). Furthermore, the exact set of accessible registers may depend on the type of frame that cp is referring to. For ordinary stack frames, it is normally possible to access only the preserved (``callee\-saved\&'') registers and frame\-related registers (such as the -stack\-pointer). However, for signal frames (see -unw_is_signal_frame(3)), +stack pointer). However, for signal frames (see +unw_is_signal_frame(3libunwind)), it is usually possible to access all registers. .PP Note that unw_set_reg() can only write the contents of registers whose values fit in a single word. See -unw_set_fpreg(3) +unw_set_fpreg(3libunwind) for a way to write registers which do not fit this constraint. .PP @@ -63,7 +65,7 @@ .PP On successful completion, unw_set_reg() returns 0. -Otherwise the negative value of one of the error\-codes below is +Otherwise the negative value of one of the error codes below is returned. .PP .SH THREAD AND SIGNAL SAFETY @@ -94,17 +96,17 @@ access_reg(), and access_fpreg() -call\-backs (see -unw_create_addr_space(3)). +callbacks (see +unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -libunwind\-ia64(3), -unw_get_reg(3), -unw_is_signal_frame(3), -unw_set_fpreg(3) +libunwind(3libunwind), +libunwind\-ia64(3libunwind), +unw_get_reg(3libunwind), +unw_is_signal_frame(3libunwind), +unw_set_fpreg(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_set_reg.tex libunwind-1.8.1/doc/unw_set_reg.tex --- libunwind-1.7.2/doc/unw_set_reg.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_set_reg.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_set\_reg}{David Mosberger-Tang}{Programming Library}{unw\_set\_reg}unw\_set\_reg -- set register contents +\begin{Name}{3libunwind}{unw\_set\_reg}{David Mosberger-Tang}{Programming Library}{unw\_set\_reg}unw\_set\_reg -- set register contents \end{Name} \section{Synopsis} @@ -20,25 +20,25 @@ \Var{reg} in the stack frame identified by cursor \Var{cp} to the value passed in \Var{val}. -The register numbering is target-dependent and described in separate -manual pages (e.g., libunwind-ia64(3) for the IA-64 target). +The register numbering is target dependent and described in separate +manual pages (e.g., libunwind-ia64(3libunwind) for the IA-64 target). Furthermore, the exact set of accessible registers may depend on the type of frame that \Var{cp} is referring to. For ordinary stack frames, it is normally possible to access only the preserved (``callee-saved'') registers and frame-related registers (such as the -stack-pointer). However, for signal frames (see -\Func{unw\_is\_signal\_frame}(3)), it is usually possible to access +stack pointer). However, for signal frames (see +\Func{unw\_is\_signal\_frame}(3libunwind)), it is usually possible to access all registers. Note that \Func{unw\_set\_reg}() can only write the contents of registers whose values fit in a single word. See -\Func{unw\_set\_fpreg}(3) for a way to write registers which do not +\Func{unw\_set\_fpreg}(3libunwind) for a way to write registers which do not fit this constraint. \section{Return Value} On successful completion, \Func{unw\_set\_reg}() returns 0. -Otherwise the negative value of one of the error-codes below is +Otherwise the negative value of one of the error codes below is returned. \section{Thread and Signal Safety} @@ -57,16 +57,16 @@ \end{Description} In addition, \Func{unw\_set\_reg}() may return any error returned by the \Func{access\_mem}(), \Func{access\_reg}(), and -\Func{access\_fpreg}() call-backs (see -\Func{unw\_create\_addr\_space}(3)). +\Func{access\_fpreg}() callbacks (see +\Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{libunwind-ia64(3)}, -\SeeAlso{unw\_get\_reg(3)}, -\SeeAlso{unw\_is\_signal\_frame(3)}, -\SeeAlso{unw\_set\_fpreg(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{libunwind-ia64}(3libunwind), +\SeeAlso{unw\_get\_reg}(3libunwind), +\SeeAlso{unw\_is\_signal\_frame}(3libunwind), +\SeeAlso{unw\_set\_fpreg}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_step.man libunwind-1.8.1/doc/unw_step.man --- libunwind-1.7.2/doc/unw_step.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_step.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 +.\" Manual page created with latex2man on Tue Aug 29 10:53:42 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_STEP" "3" "16 August 2007" "Programming Library " "Programming Library " +.TH "UNW\\_STEP" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_step \-\- advance to next stack frame @@ -87,13 +89,13 @@ access_mem(), access_reg(), or access_fpreg() -call\-backs (see unw_create_addr_space(3)). +call\-backs (see unw_create_addr_space(3libunwind)). .PP .SH SEE ALSO .PP -libunwind(3), -unw_create_addr_space(3) +libunwind(3libunwind), +unw_create_addr_space(3libunwind) .PP .SH AUTHOR diff -Nru libunwind-1.7.2/doc/unw_step.tex libunwind-1.8.1/doc/unw_step.tex --- libunwind-1.7.2/doc/unw_step.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_step.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_step}{David Mosberger-Tang}{Programming Library}{unw\_step}unw\_step -- advance to next stack frame +\begin{Name}{3libunwind}{unw\_step}{David Mosberger-Tang}{Programming Library}{unw\_step}unw\_step -- advance to next stack frame \end{Name} \section{Synopsis} @@ -50,12 +50,12 @@ In addition, \Func{unw\_step}() may return any error returned by the \Func{find\_proc\_info}(), \Func{get\_dyn\_info\_list\_addr}(), \Func{access\_mem}(), \Func{access\_reg}(), or \Func{access\_fpreg}() -call-backs (see \Func{unw\_create\_addr\_space}(3)). +call-backs (see \Func{unw\_create\_addr\_space}(3libunwind)). \section{See Also} -\SeeAlso{libunwind(3)}, -\SeeAlso{unw\_create\_addr\_space(3)} +\SeeAlso{libunwind}(3libunwind), +\SeeAlso{unw\_create\_addr\_space}(3libunwind) \section{Author} diff -Nru libunwind-1.7.2/doc/unw_strerror.man libunwind-1.8.1/doc/unw_strerror.man --- libunwind-1.7.2/doc/unw_strerror.man 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_strerror.man 2024-02-20 19:54:51.000000000 +0000 @@ -1,5 +1,7 @@ +.\" *********************************** start of \input{common.tex} +.\" *********************************** end of \input{common.tex} '\" t -.\" Manual page created with latex2man on Wed Aug 18 16:51:29 CEST 2004 +.\" Manual page created with latex2man on Tue Aug 29 10:53:42 2023 .\" NOTE: This file is generated, DO NOT EDIT. .de Vb .ft CW @@ -10,7 +12,7 @@ .fi .. -.TH "UNW\\_STRERROR" "3" "18 August 2004" "Programming Library " "Programming Library " +.TH "UNW\\_STRERROR" "3libunwind" "29 August 2023" "Programming Library " "Programming Library " .SH NAME unw_strerror \-\- get text corresponding to error code @@ -53,11 +55,11 @@ .PP Thomas Hallgren -.br +.br BEA Systems -.br +.br Stockholm, Sweden -.br +.br Email: \fBthallgre@bea.com\fP .br .\" NOTE: This file is generated, DO NOT EDIT. diff -Nru libunwind-1.7.2/doc/unw_strerror.tex libunwind-1.8.1/doc/unw_strerror.tex --- libunwind-1.7.2/doc/unw_strerror.tex 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/doc/unw_strerror.tex 2024-02-20 19:54:51.000000000 +0000 @@ -5,7 +5,7 @@ \begin{document} -\begin{Name}{3}{unw\_strerror}{Thomas Hallgren}{Programming Library}{unw\_strerror}unw\_strerror -- get text corresponding to error code +\begin{Name}{3libunwind}{unw\_strerror}{Thomas Hallgren}{Programming Library}{unw\_strerror}unw\_strerror -- get text corresponding to error code \end{Name} \section{Synopsis} diff -Nru libunwind-1.7.2/include/compiler.h libunwind-1.8.1/include/compiler.h --- libunwind-1.7.2/include/compiler.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/compiler.h 2024-02-20 19:54:51.000000000 +0000 @@ -31,6 +31,9 @@ #define COMPILER_H #ifdef __GNUC__ +#ifndef __has_attribute +# define __has_attribute(x) (0) +#endif # define CONST_ATTR __attribute__((__const__)) # define UNUSED __attribute__((unused)) # define NOINLINE __attribute__((noinline)) @@ -40,9 +43,15 @@ # if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) # define ALWAYS_INLINE inline __attribute__((always_inline)) # define HIDDEN __attribute__((visibility ("hidden"))) +# if __has_attribute(fallthrough) +# define FALLTHROUGH __attribute__((fallthrough)) +# else +# define FALLTHROUGH +# endif # else # define ALWAYS_INLINE # define HIDDEN +# define FALLTHROUGH # endif # define WEAK __attribute__((weak)) # if (__GNUC__ >= 3) @@ -60,6 +69,7 @@ # define NORETURN # define ALIAS(name) # define HIDDEN +# define FALLTHROUGH # define WEAK # define likely(x) (x) # define unlikely(x) (x) diff -Nru libunwind-1.7.2/include/config.h.in libunwind-1.8.1/include/config.h.in --- libunwind-1.7.2/include/config.h.in 2023-07-30 11:33:10.000000000 +0000 +++ libunwind-1.8.1/include/config.h.in 2024-02-22 14:09:14.000000000 +0000 @@ -107,6 +107,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_EXECINFO_H +/* Define to 1 if you have the `execvpe' function. */ +#undef HAVE_EXECVPE + /* Define to 1 if you have the `getunwind' function. */ #undef HAVE_GETUNWIND @@ -116,9 +119,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the `uca' library (-luca). */ -#undef HAVE_LIBUCA - /* Define to 1 if you have the header file. */ #undef HAVE_LINK_H diff -Nru libunwind-1.7.2/include/dwarf.h libunwind-1.8.1/include/dwarf.h --- libunwind-1.7.2/include/dwarf.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/dwarf.h 2024-02-20 19:54:51.000000000 +0000 @@ -32,12 +32,12 @@ struct dwarf_cursor; /* forward-declaration */ struct elf_dyn_info; -#include "dwarf-config.h" - #ifdef HAVE_CONFIG_H # include "config.h" #endif +#include "dwarf-config.h" + #ifndef UNW_REMOTE_ONLY #if defined(HAVE_LINK_H) #include diff -Nru libunwind-1.7.2/include/dwarf_i.h libunwind-1.8.1/include/dwarf_i.h --- libunwind-1.7.2/include/dwarf_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/dwarf_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -43,8 +43,8 @@ dwarf_misaligned_value_t; static inline int -dwarf_reads8 (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr, - int8_t *val, void *arg) +dwarf_reads8 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, unw_word_t *addr, + int8_t *val, void *arg UNUSED) { dwarf_misaligned_value_t *mvp = (void *) (uintptr_t) *addr; @@ -54,8 +54,8 @@ } static inline int -dwarf_reads16 (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr, - int16_t *val, void *arg) +dwarf_reads16 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, unw_word_t *addr, + int16_t *val, void *arg UNUSED) { dwarf_misaligned_value_t *mvp = (void *) (uintptr_t) *addr; @@ -65,8 +65,8 @@ } static inline int -dwarf_reads32 (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr, - int32_t *val, void *arg) +dwarf_reads32 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, unw_word_t *addr, + int32_t *val, void *arg UNUSED) { dwarf_misaligned_value_t *mvp = (void *) (uintptr_t) *addr; @@ -76,8 +76,8 @@ } static inline int -dwarf_reads64 (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr, - int64_t *val, void *arg) +dwarf_reads64 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, unw_word_t *addr, + int64_t *val, void *arg UNUSED) { dwarf_misaligned_value_t *mvp = (void *) (uintptr_t) *addr; @@ -87,8 +87,8 @@ } static inline int -dwarf_readu8 (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr, - uint8_t *val, void *arg) +dwarf_readu8 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, unw_word_t *addr, + uint8_t *val, void *arg UNUSED) { dwarf_misaligned_value_t *mvp = (void *) (uintptr_t) *addr; @@ -98,8 +98,8 @@ } static inline int -dwarf_readu16 (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr, - uint16_t *val, void *arg) +dwarf_readu16 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, unw_word_t *addr, + uint16_t *val, void *arg UNUSED) { dwarf_misaligned_value_t *mvp = (void *) (uintptr_t) *addr; @@ -109,8 +109,8 @@ } static inline int -dwarf_readu32 (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr, - uint32_t *val, void *arg) +dwarf_readu32 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, unw_word_t *addr, + uint32_t *val, void *arg UNUSED) { dwarf_misaligned_value_t *mvp = (void *) (uintptr_t) *addr; @@ -120,8 +120,8 @@ } static inline int -dwarf_readu64 (unw_addr_space_t as, unw_accessors_t *a, unw_word_t *addr, - uint64_t *val, void *arg) +dwarf_readu64 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, unw_word_t *addr, + uint64_t *val, void *arg UNUSED) { dwarf_misaligned_value_t *mvp = (void *) (uintptr_t) *addr; diff -Nru libunwind-1.7.2/include/libunwind-aarch64.h libunwind-1.8.1/include/libunwind-aarch64.h --- libunwind-1.7.2/include/libunwind-aarch64.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-aarch64.h 2024-02-20 19:54:51.000000000 +0000 @@ -2,6 +2,7 @@ Copyright (C) 2001-2004 Hewlett-Packard Co Contributed by David Mosberger-Tang Copyright (C) 2013 Linaro Limited + Copyright 2022 Blackberry Limited This file is part of libunwind. @@ -35,6 +36,7 @@ #include #include #include +#include #ifndef UNW_EMPTY_STRUCT # define UNW_EMPTY_STRUCT uint8_t unused; @@ -62,6 +64,8 @@ typedef long double unw_tdep_fpreg_t; +#define UNW_WORD_MAX UINT64_MAX + typedef struct { /* no aarch64-specific auxiliary proc-info */ @@ -228,9 +232,6 @@ #else /* On AArch64, we can directly use ucontext_t as the unwind context. */ typedef ucontext_t unw_tdep_context_t; -#if defined(__FreeBSD__) -typedef ucontext_t unw_fpsimd_context_t; -#endif #endif @@ -238,9 +239,11 @@ #include "libunwind-dynamic.h" #if defined(__FreeBSD__) -#define UNW_BASE register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.mc_gpregs.gp_x[0]; +# define UNW_BASE register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.mc_gpregs.gp_x; +#elif defined(__QNX__) +# define UNW_BASE register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.cpu.gpr; #else -#define UNW_BASE register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.regs; +# define UNW_BASE register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.regs; #endif #define unw_tdep_getcontext(uc) ({ \ diff -Nru libunwind-1.7.2/include/libunwind-arm.h libunwind-1.8.1/include/libunwind-arm.h --- libunwind-1.7.2/include/libunwind-arm.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-arm.h 2024-02-20 19:54:51.000000000 +0000 @@ -31,6 +31,7 @@ #include #include +#include #ifndef UNW_EMPTY_STRUCT # define UNW_EMPTY_STRUCT uint8_t unused; @@ -55,6 +56,8 @@ typedef long double unw_tdep_fpreg_t; +#define UNW_WORD_MAX UINT32_MAX + typedef enum { UNW_ARM_R0, @@ -271,9 +274,9 @@ avoid altering any registers after unw_resume. */ #ifdef __SOFTFP__ -#define VSTMIA "nop\n" /* align return address to value stored by stmia */ +#define VSTMIA "nop\n\t" /* align return address to value stored by stmia */ #else -#define VSTMIA "vstmia %[base], {d0-d15}\n" /* this also aligns return address to value stored by stmia */ +#define VSTMIA "vstmia %[base], {d0-d15}\n\t" /* this also aligns return address to value stored by stmia */ #endif #ifndef __thumb__ @@ -282,32 +285,32 @@ register unsigned long *r0 __asm__ ("r0"); \ register unsigned long *unw_base __asm__ ("r1") = unw_ctx->regs; \ __asm__ __volatile__ ( \ - "mov r0, #0\n" \ - "stmia %[base]!, {r0-r15}\n" \ + "mov r0, #0\n\t" \ + "stmia %[base]!, {r0-r15}\n\t" \ VSTMIA \ : [r0] "=r" (r0) : [base] "r" (unw_base) : "memory"); \ (int)r0; }) #else /* __thumb__ */ -#define unw_tdep_getcontext(uc) ({ \ - unw_tdep_context_t *unw_ctx = (uc); \ - register unsigned long *r0 __asm__ ("r0"); \ - register unsigned long *unw_base __asm__ ("r1") = unw_ctx->regs; \ - __asm__ __volatile__ ( \ - ".align 2\n" \ - "bx pc\n" \ - "nop\n" \ - ".code 32\n" \ - "mov r0, #0\n" \ - "stmia %[base], {r0-r14}\n" \ - "adr r0, ret%=+1\n" \ - "stmia %[base]!, {r0}\n" \ - VSTMIA \ - "orr r0, pc, #1\n" \ - "bx r0\n" \ - ".code 16\n" \ - "mov r0, #0\n" \ - "ret%=:\n" \ - : [r0] "=r" (r0), [base] "+r" (unw_base) : : "memory", "cc"); \ +#define unw_tdep_getcontext(uc) ({ \ + unw_tdep_context_t *unw_ctx = (uc); \ + register unsigned long *r0 __asm__ ("r0"); \ + register unsigned long *unw_base __asm__ ("r1") = unw_ctx->regs; \ + __asm__ __volatile__ ( \ + ".align 2\n\t" \ + "bx pc\n\t" \ + "nop\n\t" \ + ".code 32\n\t" \ + "mov r0, #0\n\t" \ + "stmia %[base]!, {r0-r14}\n\t" \ + "adr r0, ret%=+1\n\t" \ + "stmia %[base]!, {r0}\n\t" \ + VSTMIA \ + "orr r0, pc, #1\n\t" \ + "bx r0\n\t" \ + ".code 16\n\t" \ + "mov r0, #0\n\t" \ + "ret%=:\n" \ + : [r0] "=r" (r0), [base] "+r" (unw_base) : : "memory", "cc"); \ (int)r0; }) #endif diff -Nru libunwind-1.7.2/include/libunwind-common.h.in libunwind-1.8.1/include/libunwind-common.h.in --- libunwind-1.7.2/include/libunwind-common.h.in 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-common.h.in 2024-02-20 19:54:51.000000000 +0000 @@ -208,6 +208,18 @@ int (*get_proc_name) (unw_addr_space_t, unw_word_t, char *, size_t, unw_word_t *, void *); + /* Optional call back to obtain the name of a elf file where the ip belongs to. + This callback is optional and may be set to NULL. */ + int (*get_elf_filename) (unw_addr_space_t, unw_word_t, char *, size_t, + unw_word_t *, void *); + + /* Optional call back to obtain the start and end ip of a procedure. + * procedure ip range is [start, end), the range is without end. + * This callback is optional and may be set to NULL. + */ + int (*get_proc_ip_range) (unw_addr_space_t, unw_word_t, unw_word_t *, + unw_word_t *, void *); + /* Optional call back to return a mask to be used with pointer * authentication on arm64. * @@ -249,6 +261,10 @@ } unw_save_loc_t; +struct dl_phdr_info; +typedef int (*unw_iterate_phdr_callback_t) (struct dl_phdr_info *, size_t, void *); +typedef int (*unw_iterate_phdr_func_t) (unw_iterate_phdr_callback_t, void *); + /* These routines work both for local and remote unwinding. */ #define unw_local_addr_space UNW_OBJ(local_addr_space) @@ -274,8 +290,11 @@ #define unw_is_signal_frame UNW_OBJ(is_signal_frame) #define unw_get_proc_name UNW_OBJ(get_proc_name) #define unw_get_proc_name_by_ip UNW_OBJ(get_proc_name_by_ip) +#define unw_get_elf_filename UNW_OBJ(get_elf_filename) +#define unw_get_elf_filename_by_ip UNW_OBJ(get_elf_filename_by_ip) #define unw_set_caching_policy UNW_OBJ(set_caching_policy) #define unw_set_cache_size UNW_OBJ(set_cache_size) +#define unw_set_iterate_phdr_function UNW_OBJ(set_iterate_phdr_function) #define unw_regname UNW_ARCH_OBJ(regname) #define unw_flush_cache UNW_ARCH_OBJ(flush_cache) #define unw_strerror UNW_ARCH_OBJ(strerror) @@ -287,6 +306,7 @@ extern void unw_flush_cache (unw_addr_space_t, unw_word_t, unw_word_t); extern int unw_set_caching_policy (unw_addr_space_t, unw_caching_policy_t); extern int unw_set_cache_size (unw_addr_space_t, size_t, int); +extern void unw_set_iterate_phdr_function (unw_addr_space_t, unw_iterate_phdr_func_t); extern const char *unw_regname (unw_regnum_t); extern int unw_init_local (unw_cursor_t *, unw_context_t *); @@ -314,6 +334,9 @@ extern int unw_get_proc_name (unw_cursor_t *, char *, size_t, unw_word_t *); extern int unw_get_proc_name_by_ip (unw_addr_space_t, unw_word_t, char *, size_t, unw_word_t *, void *); +extern int unw_get_elf_filename (unw_cursor_t *, char *, size_t, unw_word_t *); +extern int unw_get_elf_filename_by_ip (unw_addr_space_t, unw_word_t, char *, + size_t, unw_word_t *, void *); extern const char *unw_strerror (int); extern int unw_backtrace (void **, int); extern int unw_backtrace2 (void **, int, unw_context_t*, int); diff -Nru libunwind-1.7.2/include/libunwind-coredump.h libunwind-1.8.1/include/libunwind-coredump.h --- libunwind-1.7.2/include/libunwind-coredump.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-coredump.h 2024-02-20 19:54:51.000000000 +0000 @@ -62,6 +62,8 @@ int, void *); extern int _UCD_get_proc_name (unw_addr_space_t, unw_word_t, char *, size_t, unw_word_t *, void *); +extern int _UCD_get_elf_filename (unw_addr_space_t, unw_word_t, char *, size_t, + unw_word_t *, void *); extern int _UCD_resume (unw_addr_space_t, unw_cursor_t *, void *); extern unw_accessors_t _UCD_accessors; diff -Nru libunwind-1.7.2/include/libunwind-hppa.h libunwind-1.8.1/include/libunwind-hppa.h --- libunwind-1.7.2/include/libunwind-hppa.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-hppa.h 2024-02-20 19:54:51.000000000 +0000 @@ -30,8 +30,13 @@ #endif #include +#include #include +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #define UNW_TARGET hppa #define UNW_TARGET_HPPA 1 @@ -47,6 +52,8 @@ typedef uint32_t unw_word_t; typedef int32_t unw_sword_t; +#define UNW_WORD_MAX UINT32_MAX + typedef union { struct { unw_word_t bits[2]; } raw; @@ -97,6 +104,7 @@ typedef struct unw_tdep_save_loc { /* Additional target-dependent info on a save location. */ + UNW_EMPTY_STRUCT } unw_tdep_save_loc_t; @@ -110,6 +118,7 @@ typedef struct { /* no PA-RISC-specific auxiliary proc-info */ + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind-ia64.h libunwind-1.8.1/include/libunwind-ia64.h --- libunwind-1.7.2/include/libunwind-ia64.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-ia64.h 2024-02-20 19:54:51.000000000 +0000 @@ -27,8 +27,13 @@ #define LIBUNWIND_H #include +#include #include +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif @@ -69,6 +74,8 @@ typedef uint64_t unw_word_t; typedef int64_t unw_sword_t; +#define UNW_WORD_MAX UINT64_MAX + /* On IA-64, we want to access the contents of floating-point registers as a pair of "words", but to ensure 16-byte alignment, we make it a union that contains a "long double". This will do the @@ -83,6 +90,7 @@ typedef struct { /* no ia64-specific auxiliary proc-info */ + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind-loongarch64.h libunwind-1.8.1/include/libunwind-loongarch64.h --- libunwind-1.7.2/include/libunwind-loongarch64.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-loongarch64.h 2024-02-20 19:54:51.000000000 +0000 @@ -32,8 +32,13 @@ #endif #include +#include #include +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #define UNW_TARGET loongarch64 #define UNW_TARGET_LOONGARCH64 1 @@ -53,6 +58,8 @@ typedef long double unw_tdep_fpreg_t; +#define UNW_WORD_MAX UINT64_MAX + typedef enum { UNW_LOONGARCH64_R0, @@ -109,7 +116,7 @@ typedef struct unw_tdep_save_loc { /* Additional target-dependent info on a save location. */ - char unused; + UNW_EMPTY_STRUCT } unw_tdep_save_loc_t; @@ -119,7 +126,7 @@ typedef struct { /* no loongarch64-specific auxiliary proc-info */ - char unused; + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind-mips.h libunwind-1.8.1/include/libunwind-mips.h --- libunwind-1.7.2/include/libunwind-mips.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-mips.h 2024-02-20 19:54:51.000000000 +0000 @@ -30,12 +30,17 @@ #endif #include +#include #include #ifdef mips # undef mips #endif +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #define UNW_TARGET mips #define UNW_TARGET_MIPS 1 @@ -55,8 +60,10 @@ ABIs, and 64-bit wide for N64 ABI. */ #if _MIPS_SIM == _ABI64 typedef uint64_t unw_word_t; +# define UNW_WORD_MAX UINT64_MAX #else typedef uint32_t unw_word_t; +# define UNW_WORD_MAX UINT32_MAX #endif typedef int32_t unw_sword_t; @@ -127,6 +134,7 @@ typedef struct unw_tdep_save_loc { /* Additional target-dependent info on a save location. */ + UNW_EMPTY_STRUCT } unw_tdep_save_loc_t; @@ -139,6 +147,7 @@ typedef struct { /* no mips-specific auxiliary proc-info */ + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind-nto.h libunwind-1.8.1/include/libunwind-nto.h --- libunwind-1.7.2/include/libunwind-nto.h 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-nto.h 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,69 @@ +/** + * Public interface for the QNX Neutrino remote unwinding library. + * + * This library provides helper routines to make it possible to use libunwind + * via the QNX Neutrino procfs. + */ +/* + * Copyright 2020, 2022 QNX Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#ifndef LIBUNWIND_NTO_H +#define LIBUNWIND_NTO_H + +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +static const pthread_t LUT_ALL_THREADS = -1; + +/** + * Helper routines to make it easy to unwind using devctl() on unw_nto. + */ +extern void *unw_nto_create(pid_t, pthread_t); +extern void unw_nto_destroy(void *); + +extern int unw_nto_find_proc_info(unw_addr_space_t, unw_word_t, unw_proc_info_t *, int, void *); +extern void unw_nto_put_unwind_info(unw_addr_space_t, unw_proc_info_t *, void *); +extern int unw_nto_get_dyn_info_list_addr(unw_addr_space_t, unw_word_t *, void *); +extern int unw_nto_access_mem(unw_addr_space_t, unw_word_t, unw_word_t *, int, void *); +extern int unw_nto_access_reg(unw_addr_space_t, unw_regnum_t, unw_word_t *, int, void *); +extern int unw_nto_access_fpreg(unw_addr_space_t, unw_regnum_t, unw_fpreg_t *, int, void *); +extern int unw_nto_get_proc_name(unw_addr_space_t, unw_word_t, char *, size_t, unw_word_t *, void *); +extern int unw_nto_get_proc_ip_range (unw_addr_space_t as, unw_word_t ip, unw_word_t *start, unw_word_t *end, void *); +extern int unw_nto_get_elf_filename(unw_addr_space_t, unw_word_t, char *, size_t, unw_word_t *, void *); +extern int unw_nto_resume(unw_addr_space_t, unw_cursor_t *, void *); + +/** + * A handy pre-defined accessor with all of the above. + */ +extern unw_accessors_t unw_nto_accessors; + +#if defined(__cplusplus) +} /* extern "C" */ +#endif + +#endif /* LIBUNWIND_NTO_H */ diff -Nru libunwind-1.7.2/include/libunwind-ppc32.h libunwind-1.8.1/include/libunwind-ppc32.h --- libunwind-1.7.2/include/libunwind-ppc32.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-ppc32.h 2024-02-20 19:54:51.000000000 +0000 @@ -37,8 +37,13 @@ #endif #include +#include #include +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #define UNW_TARGET ppc32 #define UNW_TARGET_PPC32 1 @@ -67,9 +72,11 @@ #if __WORDSIZE==32 typedef uint32_t unw_word_t; typedef int32_t unw_sword_t; +# define UNW_WORD_MAX UINT32_MAX #else typedef uint64_t unw_word_t; typedef int64_t unw_sword_t; +# define UNW_WORD_MAX UINT64_MAX #endif typedef long double unw_tdep_fpreg_t; @@ -175,6 +182,7 @@ typedef struct unw_tdep_save_loc { /* Additional target-dependent info on a save location. */ + UNW_EMPTY_STRUCT } unw_tdep_save_loc_t; @@ -192,6 +200,7 @@ typedef struct { /* no ppc32-specific auxiliary proc-info */ + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind-ppc64.h libunwind-1.8.1/include/libunwind-ppc64.h --- libunwind-1.7.2/include/libunwind-ppc64.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-ppc64.h 2024-02-20 19:54:51.000000000 +0000 @@ -37,8 +37,13 @@ #endif #include +#include #include +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #define UNW_TARGET ppc64 #define UNW_TARGET_PPC64 1 @@ -67,9 +72,11 @@ #if __WORDSIZE==32 typedef uint32_t unw_word_t; typedef int32_t unw_sword_t; +#define UNW_WORD_MAX UINT32_MAX #else typedef uint64_t unw_word_t; typedef int64_t unw_sword_t; +#define UNW_WORD_MAX UINT64_MAX #endif typedef double unw_tdep_fpreg_t; @@ -239,6 +246,7 @@ typedef struct unw_tdep_save_loc { /* Additional target-dependent info on a save location. */ + UNW_EMPTY_STRUCT } unw_tdep_save_loc_t; @@ -256,6 +264,7 @@ typedef struct { /* no ppc64-specific auxiliary proc-info */ + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind-ptrace.h libunwind-1.8.1/include/libunwind-ptrace.h --- libunwind-1.7.2/include/libunwind-ptrace.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-ptrace.h 2024-02-20 19:54:51.000000000 +0000 @@ -53,6 +53,8 @@ int, void *); extern int _UPT_get_proc_name (unw_addr_space_t, unw_word_t, char *, size_t, unw_word_t *, void *); +extern int _UPT_get_elf_filename (unw_addr_space_t, unw_word_t, char *, size_t, + unw_word_t *, void *); extern int _UPT_resume (unw_addr_space_t, unw_cursor_t *, void *); extern unw_accessors_t _UPT_accessors; diff -Nru libunwind-1.7.2/include/libunwind-riscv.h libunwind-1.8.1/include/libunwind-riscv.h --- libunwind-1.7.2/include/libunwind-riscv.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-riscv.h 2024-02-20 19:54:51.000000000 +0000 @@ -34,8 +34,13 @@ #include #include +#include #include +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #define UNW_TARGET riscv #define UNW_TARGET_RISCV 1 @@ -52,9 +57,11 @@ #if __riscv_xlen == 32 typedef uint32_t unw_word_t; typedef int32_t unw_sword_t; +# define UNW_WORD_MAX UINT32_MAX #elif __riscv_xlen == 64 typedef uint64_t unw_word_t; typedef int64_t unw_sword_t; +# define UNW_WORD_MAX UINT64_MAX #endif #if __riscv_flen == 64 @@ -157,7 +164,7 @@ typedef struct unw_tdep_save_loc { /* Additional target-dependent info on a save location. */ - char unused; + UNW_EMPTY_STRUCT } unw_tdep_save_loc_t; @@ -167,7 +174,7 @@ typedef struct { /* no riscv-specific auxiliary proc-info */ - char unused; + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind-s390x.h libunwind-1.8.1/include/libunwind-s390x.h --- libunwind-1.7.2/include/libunwind-s390x.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-s390x.h 2024-02-20 19:54:51.000000000 +0000 @@ -36,6 +36,10 @@ #include #include +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #define UNW_TARGET s390x #define UNW_TARGET_S390X 1 @@ -53,6 +57,8 @@ typedef double unw_tdep_fpreg_t; +#define UNW_WORD_MAX UINT64_MAX + typedef enum { /* general purpose registers */ @@ -114,7 +120,7 @@ typedef struct unw_tdep_save_loc { /* Additional target-dependent info on a save location. */ - char unused; + UNW_EMPTY_STRUCT } unw_tdep_save_loc_t; @@ -124,7 +130,7 @@ typedef struct { /* no s390x-specific auxiliary proc-info */ - char unused; + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind-sh.h libunwind-1.8.1/include/libunwind-sh.h --- libunwind-1.7.2/include/libunwind-sh.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-sh.h 2024-02-20 19:54:51.000000000 +0000 @@ -32,8 +32,13 @@ #include #include +#include #include +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #define UNW_TARGET sh #define UNW_TARGET_SH 1 @@ -52,6 +57,8 @@ typedef long double unw_tdep_fpreg_t; +#define UNW_WORD_MAX UINT32_MAX + typedef enum { UNW_SH_R0, @@ -91,6 +98,7 @@ typedef struct unw_tdep_save_loc { /* Additional target-dependent info on a save location. */ + UNW_EMPTY_STRUCT } unw_tdep_save_loc_t; @@ -99,6 +107,7 @@ typedef struct { /* no sh-specific auxiliary proc-info */ + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind-tilegx.h libunwind-1.8.1/include/libunwind-tilegx.h --- libunwind-1.7.2/include/libunwind-tilegx.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-tilegx.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#ifndef LIBUNWIND_H -#define LIBUNWIND_H - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - -#include -#include - -#define UNW_TARGET tilegx -#define UNW_TARGET_TILEGX 1 - -#define _U_TDEP_QP_TRUE 0 /* see libunwind-dynamic.h */ - -/* This needs to be big enough to accommodate "struct cursor", while - leaving some slack for future expansion. Changing this value will - require recompiling all users of this library. Stack allocation is - relatively cheap and unwind-state copying is relatively rare, so we - want to err on making it rather too big than too small. */ - -#define UNW_TDEP_CURSOR_LEN 4096 - -/* The size of a "word" varies on TILEGX. This type is used for memory - addresses and register values. */ -typedef uint64_t unw_word_t; -typedef int64_t unw_sword_t; - -typedef long double unw_tdep_fpreg_t; - -typedef enum -{ - UNW_TILEGX_R0, - UNW_TILEGX_R1, - UNW_TILEGX_R2, - UNW_TILEGX_R3, - UNW_TILEGX_R4, - UNW_TILEGX_R5, - UNW_TILEGX_R6, - UNW_TILEGX_R7, - UNW_TILEGX_R8, - UNW_TILEGX_R9, - UNW_TILEGX_R10, - UNW_TILEGX_R11, - UNW_TILEGX_R12, - UNW_TILEGX_R13, - UNW_TILEGX_R14, - UNW_TILEGX_R15, - UNW_TILEGX_R16, - UNW_TILEGX_R17, - UNW_TILEGX_R18, - UNW_TILEGX_R19, - UNW_TILEGX_R20, - UNW_TILEGX_R21, - UNW_TILEGX_R22, - UNW_TILEGX_R23, - UNW_TILEGX_R24, - UNW_TILEGX_R25, - UNW_TILEGX_R26, - UNW_TILEGX_R27, - UNW_TILEGX_R28, - UNW_TILEGX_R29, - UNW_TILEGX_R30, - UNW_TILEGX_R31, - UNW_TILEGX_R32, - UNW_TILEGX_R33, - UNW_TILEGX_R34, - UNW_TILEGX_R35, - UNW_TILEGX_R36, - UNW_TILEGX_R37, - UNW_TILEGX_R38, - UNW_TILEGX_R39, - UNW_TILEGX_R40, - UNW_TILEGX_R41, - UNW_TILEGX_R42, - UNW_TILEGX_R43, - UNW_TILEGX_R44, - UNW_TILEGX_R45, - UNW_TILEGX_R46, - UNW_TILEGX_R47, - UNW_TILEGX_R48, - UNW_TILEGX_R49, - UNW_TILEGX_R50, - UNW_TILEGX_R51, - UNW_TILEGX_R52, - UNW_TILEGX_R53, - UNW_TILEGX_R54, - UNW_TILEGX_R55, - - /* FIXME: Other registers! */ - - UNW_TILEGX_PC, - /* For TILEGX, the CFA is the value of SP (r54) at the call site in the - previous frame. */ - UNW_TILEGX_CFA, - - UNW_TDEP_LAST_REG = UNW_TILEGX_PC, - - UNW_TDEP_IP = UNW_TILEGX_R55, /* R55 is link register for Tilegx */ - UNW_TDEP_SP = UNW_TILEGX_R54, - UNW_TDEP_EH = UNW_TILEGX_R0 /* FIXME. */ -} tilegx_regnum_t; - -typedef enum -{ - UNW_TILEGX_ABI_N64 = 2 -} tilegx_abi_t; - -#define UNW_TDEP_NUM_EH_REGS 2 /* FIXME for TILEGX. */ - -typedef struct unw_tdep_save_loc -{ - /* Additional target-dependent info on a save location. */ -} unw_tdep_save_loc_t; - -typedef ucontext_t unw_tdep_context_t; - -#include "libunwind-dynamic.h" - -typedef struct -{ - /* no tilegx-specific auxiliary proc-info */ -} unw_tdep_proc_info_t; - -#include "libunwind-common.h" - -#define unw_tdep_getcontext getcontext - -#define unw_tdep_is_fpreg UNW_ARCH_OBJ(is_fpreg) -extern int unw_tdep_is_fpreg (int); - -#if defined(__cplusplus) || defined(c_plusplus) -} -#endif - -#endif /* LIBUNWIND_H */ diff -Nru libunwind-1.7.2/include/libunwind-x86.h libunwind-1.8.1/include/libunwind-x86.h --- libunwind-1.7.2/include/libunwind-x86.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-x86.h 2024-02-20 19:54:51.000000000 +0000 @@ -32,6 +32,7 @@ #include #include +#include #include #ifndef UNW_EMPTY_STRUCT @@ -53,6 +54,8 @@ typedef uint32_t unw_word_t; typedef int32_t unw_sword_t; +#define UNW_WORD_MAX UINT32_MAX + typedef union { struct { uint8_t b[4]; } val32; struct { uint8_t b[10]; } val80; diff -Nru libunwind-1.7.2/include/libunwind-x86_64.h libunwind-1.8.1/include/libunwind-x86_64.h --- libunwind-1.7.2/include/libunwind-x86_64.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/include/libunwind-x86_64.h 2024-02-20 19:54:51.000000000 +0000 @@ -34,8 +34,13 @@ #include #include +#include #include +#ifndef UNW_EMPTY_STRUCT +# define UNW_EMPTY_STRUCT uint8_t unused; +#endif + #define UNW_TARGET x86_64 #define UNW_TARGET_X86_64 1 @@ -53,6 +58,8 @@ typedef long double unw_tdep_fpreg_t; +#define UNW_WORD_MAX UINT64_MAX + typedef enum { UNW_X86_64_RAX, @@ -111,7 +118,7 @@ typedef struct unw_tdep_save_loc { /* Additional target-dependent info on a save location. */ - char unused; + UNW_EMPTY_STRUCT } unw_tdep_save_loc_t; @@ -121,7 +128,7 @@ typedef struct { /* no x86-64-specific auxiliary proc-info */ - char unused; + UNW_EMPTY_STRUCT } unw_tdep_proc_info_t; diff -Nru libunwind-1.7.2/include/libunwind.h libunwind-1.8.1/include/libunwind.h --- libunwind-1.7.2/include/libunwind.h 2023-07-30 11:33:46.000000000 +0000 +++ libunwind-1.8.1/include/libunwind.h 2024-02-22 14:09:21.000000000 +0000 @@ -23,8 +23,6 @@ # include "libunwind-x86.h" #elif defined __x86_64__ # include "libunwind-x86_64.h" -#elif defined __tilegx__ -# include "libunwind-tilegx.h" #elif defined __s390x__ # include "libunwind-s390x.h" #elif defined __riscv || defined __riscv__ diff -Nru libunwind-1.7.2/include/libunwind.h.in libunwind-1.8.1/include/libunwind.h.in --- libunwind-1.7.2/include/libunwind.h.in 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/libunwind.h.in 2024-02-20 19:54:51.000000000 +0000 @@ -23,8 +23,6 @@ # include "libunwind-x86.h" #elif defined __x86_64__ # include "libunwind-x86_64.h" -#elif defined __tilegx__ -# include "libunwind-tilegx.h" #elif defined __s390x__ # include "libunwind-s390x.h" #elif defined __riscv || defined __riscv__ diff -Nru libunwind-1.7.2/include/libunwind_i.h libunwind-1.8.1/include/libunwind_i.h --- libunwind-1.7.2/include/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -58,6 +59,10 @@ #include #include +#if defined(HAVE_SYS_SYSCALL_H) +# include /* For SYS_xxx definitions */ +#endif + #if defined(HAVE_ELF_H) # include #elif defined(HAVE_SYS_ELF_H) @@ -121,8 +126,8 @@ static inline int byte_order_is_valid(int byte_order) { - return byte_order != UNW_BIG_ENDIAN - && byte_order != UNW_LITTLE_ENDIAN; + return byte_order == UNW_BIG_ENDIAN + || byte_order == UNW_LITTLE_ENDIAN; } static inline int @@ -146,7 +151,7 @@ #ifdef DEBUG # define UNW_DEBUG 1 #else -# define UNW_DEBUG 0 +# undef UNW_DEBUG #endif /* Make it easy to write thread-safe code which may or may not be @@ -157,6 +162,7 @@ #pragma weak pthread_mutex_init #pragma weak pthread_mutex_lock #pragma weak pthread_mutex_unlock +#pragma weak pthread_sigmask #define mutex_init(l) \ (pthread_mutex_init != NULL ? pthread_mutex_init ((l), NULL) : 0) @@ -184,8 +190,11 @@ } #if defined(CONFIG_BLOCK_SIGNALS) +/* SIGPROCMASK ignores return values, so we do not have to correct for pthread_sigmask() returning + errno on failure when sigprocmask() returns -1. */ # define SIGPROCMASK(how, new_mask, old_mask) \ - sigprocmask((how), (new_mask), (old_mask)) + (pthread_sigmask != NULL ? pthread_sigmask((how), (new_mask), (old_mask)) \ + : sigprocmask((how), (new_mask), (old_mask))) #else # define SIGPROCMASK(how, new_mask, old_mask) mark_as_used(old_mask) #endif @@ -213,14 +222,46 @@ #define SOS_MEMORY_SIZE 16384 /* see src/mi/mempool.c */ +/* Provide an internal syscall version of mmap to improve signal safety. */ +static ALWAYS_INLINE void * +mi_mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset) +{ +#if defined(SYS_mmap) && !defined(__i386__) + /* Where supported, bypass libc and invoke the syscall directly. */ +# if defined(__FreeBSD__) // prefer over syscall on *BSD + long int ret = __syscall (SYS_mmap, addr, len, prot, flags, fd, offset); +# else + long int ret = syscall (SYS_mmap, addr, len, prot, flags, fd, offset); +# endif + // @todo this is very likely Linux specific + if ((unsigned long int)ret > -4096UL) + return MAP_FAILED; + else + return (void *)ret; +#else + /* Where direct syscalls are not supported, forward to the libc call. */ + return mmap (addr, len, prot, flags, fd, offset); +#endif +} + +/* Provide an internal syscall version of munmap to improve signal safety. */ +static ALWAYS_INLINE int +mi_munmap (void *addr, size_t len) +{ +#ifdef SYS_munmap + return syscall (SYS_munmap, addr, len); +#else + return munmap (addr, len); +#endif +} + #ifndef MAP_ANONYMOUS # define MAP_ANONYMOUS MAP_ANON #endif #define GET_MEMORY(mem, size) \ do { \ - /* Hopefully, mmap() goes straight through to a system call stub... */ \ - mem = mmap (NULL, size, PROT_READ | PROT_WRITE, \ - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); \ + mem = mi_mmap (NULL, size, PROT_READ | PROT_WRITE, \ + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); \ if (mem == MAP_FAILED) \ mem = NULL; \ } while (0) @@ -261,28 +302,53 @@ extern unw_dyn_info_list_t _U_dyn_info_list; extern pthread_mutex_t _U_dyn_info_list_lock; -#if UNW_DEBUG -#define unwi_debug_level UNWI_ARCH_OBJ(debug_level) +#define unw_address_is_valid UNWI_ARCH_OBJ(address_is_valid) +HIDDEN bool unw_address_is_valid(unw_word_t, size_t); + + +#if defined(UNW_DEBUG) +# define unwi_debug_level UNWI_ARCH_OBJ(debug_level) extern long unwi_debug_level; +# include # include -# define Debug(level, /* format */ ...) \ -do { \ - if (unwi_debug_level >= level) \ - { \ - int _n = level; \ - if (_n > 16) \ - _n = 16; \ - fprintf (stderr, "%*c>%s: ", _n, ' ', __FUNCTION__); \ - fprintf (stderr, /* format */ __VA_ARGS__); \ - } \ -} while (0) +# include + +#define Debug(level, ...) _unw_debug(level, __FUNCTION__, __VA_ARGS__) + +/** + * Send a debug message to stderr. + * + * This function may be called from within a signal handler context where + * fprintf(3) is not safe to call. The write(2) call is safe, however, and we're + * going to have to assume that snprintf(3) is signal safe otherwise it's pretty + * pointless to use Debug() calls anywhere. + */ +static inline void _unw_debug(int level, char const * const fname, char const * const fmt, ...) +{ + if (unwi_debug_level >= level) + { + enum { buf_size = 512 }; + char buf[buf_size]; + + if (level > 16) level = 16; + int bcount = snprintf (buf, buf_size, "%*c>%s: ", level, ' ', fname); + int res = write(STDERR_FILENO, buf, bcount); + + va_list ap; + va_start(ap, fmt); + bcount = vsnprintf (buf, buf_size, fmt, ap); + va_end(ap); + res = write(STDERR_FILENO, buf, bcount); + (void)res; /* silence "variable set but not used" warning */ + } +} # define Dprintf(/* format */ ...) \ fprintf (stderr, /* format */ __VA_ARGS__) -#else +#else /* defined(UNW_DEBUG) */ # define Debug(level, /* format */ ...) # define Dprintf( /* format */ ...) -#endif +#endif /* defined(UNW_DEBUG) */ static ALWAYS_INLINE int print_error (const char *string) @@ -292,7 +358,7 @@ HIDDEN extern long unw_page_size; -static inline unw_word_t uwn_page_start(unw_word_t addr) +static inline unw_word_t unw_page_start(unw_word_t addr) { return addr & ~(unw_page_size - 1); } @@ -326,7 +392,7 @@ static inline void invalidate_edi (struct elf_dyn_info *edi) { if (edi->ei.image) - munmap (edi->ei.image, edi->ei.size); + mi_munmap (edi->ei.image, edi->ei.size); memset (edi, 0, sizeof (*edi)); edi->di_cache.format = -1; edi->di_debug.format = -1; diff -Nru libunwind-1.7.2/include/remote.h libunwind-1.8.1/include/remote.h --- libunwind-1.7.2/include/remote.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/remote.h 2024-02-20 19:54:51.000000000 +0000 @@ -8,8 +8,8 @@ #ifdef UNW_LOCAL_ONLY static inline int -fetch8 (unw_addr_space_t as, unw_accessors_t *a, - unw_word_t *addr, int8_t *valp, void *arg) +fetch8 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, + unw_word_t *addr, int8_t *valp, void *arg UNUSED) { *valp = *(int8_t *) (uintptr_t) *addr; *addr += 1; @@ -17,8 +17,8 @@ } static inline int -fetch16 (unw_addr_space_t as, unw_accessors_t *a, - unw_word_t *addr, int16_t *valp, void *arg) +fetch16 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, + unw_word_t *addr, int16_t *valp, void *arg UNUSED) { *valp = *(int16_t *) (uintptr_t) *addr; *addr += 2; @@ -26,8 +26,8 @@ } static inline int -fetch32 (unw_addr_space_t as, unw_accessors_t *a, - unw_word_t *addr, int32_t *valp, void *arg) +fetch32 (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, + unw_word_t *addr, int32_t *valp, void *arg UNUSED) { *valp = *(int32_t *) (uintptr_t) *addr; *addr += 4; @@ -35,8 +35,8 @@ } static inline int -fetchw (unw_addr_space_t as, unw_accessors_t *a, - unw_word_t *addr, unw_word_t *valp, void *arg) +fetchw (unw_addr_space_t as UNUSED, unw_accessors_t *a UNUSED, + unw_word_t *addr, unw_word_t *valp, void *arg UNUSED) { *valp = *(unw_word_t *) (uintptr_t) *addr; *addr += sizeof (unw_word_t); diff -Nru libunwind-1.7.2/include/tdep/dwarf-config.h libunwind-1.8.1/include/tdep/dwarf-config.h --- libunwind-1.7.2/include/tdep/dwarf-config.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep/dwarf-config.h 2024-02-20 19:54:51.000000000 +0000 @@ -23,8 +23,6 @@ # include "tdep-x86/dwarf-config.h" #elif defined __x86_64__ || defined __amd64__ # include "tdep-x86_64/dwarf-config.h" -#elif defined __tilegx__ -# include "tdep-tilegx/dwarf-config.h" #elif defined __riscv || defined __riscv__ # include "tdep-riscv/dwarf-config.h" #elif defined __loongarch64 diff -Nru libunwind-1.7.2/include/tdep/jmpbuf.h libunwind-1.8.1/include/tdep/jmpbuf.h --- libunwind-1.7.2/include/tdep/jmpbuf.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep/jmpbuf.h 2024-02-20 19:54:51.000000000 +0000 @@ -21,8 +21,6 @@ # include "tdep-x86/jmpbuf.h" #elif defined __x86_64__ # include "tdep-x86_64/jmpbuf.h" -#elif defined __tilegx__ -# include "tdep-tilegx/jmpbuf.h" #elif defined __riscv || defined __riscv__ # include "tdep-riscv/jmpbuf.h" #elif defined __loongarch64 diff -Nru libunwind-1.7.2/include/tdep/libunwind_i.h libunwind-1.8.1/include/tdep/libunwind_i.h --- libunwind-1.7.2/include/tdep/libunwind_i.h 2023-07-30 11:33:46.000000000 +0000 +++ libunwind-1.8.1/include/tdep/libunwind_i.h 2024-02-22 14:09:21.000000000 +0000 @@ -23,8 +23,6 @@ # include "tdep-x86/libunwind_i.h" #elif defined __x86_64__ # include "tdep-x86_64/libunwind_i.h" -#elif defined __tilegx__ -# include "tdep-tilegx/libunwind_i.h" #elif defined __s390x__ # include "tdep-s390x/libunwind_i.h" #elif defined __riscv || defined __riscv__ diff -Nru libunwind-1.7.2/include/tdep/libunwind_i.h.in libunwind-1.8.1/include/tdep/libunwind_i.h.in --- libunwind-1.7.2/include/tdep/libunwind_i.h.in 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep/libunwind_i.h.in 2024-02-20 19:54:51.000000000 +0000 @@ -23,8 +23,6 @@ # include "tdep-x86/libunwind_i.h" #elif defined __x86_64__ # include "tdep-x86_64/libunwind_i.h" -#elif defined __tilegx__ -# include "tdep-tilegx/libunwind_i.h" #elif defined __s390x__ # include "tdep-s390x/libunwind_i.h" #elif defined __riscv || defined __riscv__ diff -Nru libunwind-1.7.2/include/tdep-aarch64/jmpbuf.h libunwind-1.8.1/include/tdep-aarch64/jmpbuf.h --- libunwind-1.7.2/include/tdep-aarch64/jmpbuf.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-aarch64/jmpbuf.h 2024-02-20 19:54:51.000000000 +0000 @@ -27,7 +27,15 @@ /* FIXME for AArch64 */ +#if defined __FreeBSD__ +#define JB_SP 1 +#define JB_RP 13 +#define JB_MASK_SAVED 0 +#define JB_MASK 22 +#define _JB_STK_SHIFT 0 +#else #define JB_SP 13 #define JB_RP 14 #define JB_MASK_SAVED 15 #define JB_MASK 16 +#endif diff -Nru libunwind-1.7.2/include/tdep-aarch64/libunwind_i.h libunwind-1.8.1/include/tdep-aarch64/libunwind_i.h --- libunwind-1.7.2/include/tdep-aarch64/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-aarch64/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -78,6 +78,9 @@ { struct unw_accessors acc; int big_endian; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ @@ -96,16 +99,18 @@ { AARCH64_SCF_NONE, AARCH64_SCF_LINUX_RT_SIGFRAME, + AARCH64_SCF_FREEBSD_RT_SIGFRAME, + AARCH64_SCF_QNX_RT_SIGFRAME, } sigcontext_format; unw_word_t sigcontext_addr; unw_word_t sigcontext_sp; unw_word_t sigcontext_pc; int validate; - ucontext_t *uc; + unw_context_t *uc; }; -static inline ucontext_t * +static inline unw_context_t * dwarf_get_uc(const struct dwarf_cursor *cursor) { const struct cursor *c = (struct cursor *) cursor->as_arg; @@ -273,7 +278,6 @@ #define tdep_getcontext_trace UNW_ARCH_OBJ(getcontext_trace) #define tdep_init_done UNW_OBJ(init_done) -#define tdep_init_mem_validate UNW_OBJ(init_mem_validate) #define tdep_init UNW_OBJ(init) /* Platforms that support UNW_INFO_FORMAT_TABLE need to define tdep_search_unwind_table. */ @@ -312,11 +316,10 @@ extern atomic_bool tdep_init_done; extern void tdep_init (void); -extern void tdep_init_mem_validate (void); extern int tdep_search_unwind_table (unw_addr_space_t as, unw_word_t ip, unw_dyn_info_t *di, unw_proc_info_t *pi, int need_unwind_info, void *arg); -extern void *tdep_uc_addr (unw_tdep_context_t *uc, int reg); +extern void *tdep_uc_addr (unw_context_t *uc, int reg); extern int tdep_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip, unsigned long *segbase, unsigned long *mapoff, char *path, size_t pathlen); @@ -328,6 +331,6 @@ extern int tdep_trace (unw_cursor_t *cursor, void **addresses, int *n); extern void tdep_stash_frame (struct dwarf_cursor *c, struct dwarf_reg_state *rs); -extern int tdep_getcontext_trace (unw_tdep_context_t *); +extern int tdep_getcontext_trace (unw_context_t *); #endif /* AARCH64_LIBUNWIND_I_H */ diff -Nru libunwind-1.7.2/include/tdep-arm/libunwind_i.h libunwind-1.8.1/include/tdep-arm/libunwind_i.h --- libunwind-1.7.2/include/tdep-arm/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-arm/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -64,6 +64,9 @@ { struct unw_accessors acc; int big_endian; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ diff -Nru libunwind-1.7.2/include/tdep-hppa/libunwind_i.h libunwind-1.8.1/include/tdep-hppa/libunwind_i.h --- libunwind-1.7.2/include/tdep-hppa/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-hppa/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -46,6 +46,9 @@ struct unw_addr_space { struct unw_accessors acc; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ diff -Nru libunwind-1.7.2/include/tdep-ia64/libunwind_i.h libunwind-1.8.1/include/tdep-ia64/libunwind_i.h --- libunwind-1.7.2/include/tdep-ia64/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-ia64/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -97,6 +97,9 @@ struct unw_accessors acc; int big_endian; int abi; /* abi < 0 => unknown, 0 => SysV, 1 => HP-UX, 2 => Windows */ +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; diff -Nru libunwind-1.7.2/include/tdep-loongarch64/libunwind_i.h libunwind-1.8.1/include/tdep-loongarch64/libunwind_i.h --- libunwind-1.7.2/include/tdep-loongarch64/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-loongarch64/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -45,6 +45,9 @@ { struct unw_accessors acc; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ @@ -230,10 +233,8 @@ #define tdep_get_ip(c) ((c)->dwarf.ip) extern atomic_bool tdep_init_done; -#define tdep_init_mem_validate UNW_OBJ(init_mem_validate) extern void tdep_init (void); -extern void tdep_init_mem_validate (void); extern int tdep_search_unwind_table (unw_addr_space_t as, unw_word_t ip, unw_dyn_info_t *di, unw_proc_info_t *pi, int need_unwind_info, void *arg); diff -Nru libunwind-1.7.2/include/tdep-mips/libunwind_i.h libunwind-1.8.1/include/tdep-mips/libunwind_i.h --- libunwind-1.7.2/include/tdep-mips/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-mips/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -54,6 +54,9 @@ mips_abi_t abi; unsigned int addr_size; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ diff -Nru libunwind-1.7.2/include/tdep-ppc32/libunwind_i.h libunwind-1.8.1/include/tdep-ppc32/libunwind_i.h --- libunwind-1.7.2/include/tdep-ppc32/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-ppc32/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -52,6 +52,9 @@ struct unw_addr_space { struct unw_accessors acc; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ diff -Nru libunwind-1.7.2/include/tdep-ppc64/libunwind_i.h libunwind-1.8.1/include/tdep-ppc64/libunwind_i.h --- libunwind-1.7.2/include/tdep-ppc64/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-ppc64/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -54,6 +54,9 @@ struct unw_accessors acc; int big_endian; ppc64_abi_t abi; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ diff -Nru libunwind-1.7.2/include/tdep-riscv/libunwind_i.h libunwind-1.8.1/include/tdep-riscv/libunwind_i.h --- libunwind-1.7.2/include/tdep-riscv/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-riscv/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -60,6 +60,9 @@ int big_endian; unsigned int addr_size; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ @@ -161,7 +164,6 @@ { char *valp = (char *) &val; unw_word_t addr; - int ret; if (DWARF_IS_NULL_LOC (loc)) return -UNW_EBADREG; @@ -185,7 +187,6 @@ { char *valp = (char *) &val; unw_word_t addr; - int ret; if (DWARF_IS_NULL_LOC (loc)) return -UNW_EBADREG; @@ -247,7 +248,6 @@ #endif /* !UNW_LOCAL_ONLY */ #define tdep_getcontext_trace unw_getcontext -#define tdep_init_mem_validate UNW_OBJ(init_mem_validate) #define tdep_init_done UNW_OBJ(init_done) #define tdep_init UNW_OBJ(init) /* Platforms that support UNW_INFO_FORMAT_TABLE need to define @@ -286,7 +286,6 @@ extern atomic_bool tdep_init_done; extern void tdep_init (void); -extern void tdep_init_mem_validate (void); extern int tdep_search_unwind_table (unw_addr_space_t as, unw_word_t ip, unw_dyn_info_t *di, unw_proc_info_t *pi, int need_unwind_info, void *arg); diff -Nru libunwind-1.7.2/include/tdep-s390x/libunwind_i.h libunwind-1.8.1/include/tdep-s390x/libunwind_i.h --- libunwind-1.7.2/include/tdep-s390x/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-s390x/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -42,6 +42,9 @@ struct unw_addr_space { struct unw_accessors acc; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ @@ -203,7 +206,6 @@ #define tdep_getcontext_trace unw_getcontext #define tdep_init_done UNW_OBJ(init_done) -#define tdep_init_mem_validate UNW_OBJ(init_mem_validate) #define tdep_init UNW_OBJ(init) /* Platforms that support UNW_INFO_FORMAT_TABLE need to define tdep_search_unwind_table. */ @@ -242,7 +244,6 @@ extern atomic_bool tdep_init_done; extern void tdep_init (void); -extern void tdep_init_mem_validate (void); extern int tdep_search_unwind_table (unw_addr_space_t as, unw_word_t ip, unw_dyn_info_t *di, unw_proc_info_t *pi, int need_unwind_info, void *arg); diff -Nru libunwind-1.7.2/include/tdep-sh/libunwind_i.h libunwind-1.8.1/include/tdep-sh/libunwind_i.h --- libunwind-1.7.2/include/tdep-sh/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-sh/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -47,6 +47,9 @@ { struct unw_accessors acc; int big_endian; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ diff -Nru libunwind-1.7.2/include/tdep-tilegx/dwarf-config.h libunwind-1.8.1/include/tdep-tilegx/dwarf-config.h --- libunwind-1.7.2/include/tdep-tilegx/dwarf-config.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-tilegx/dwarf-config.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#ifndef dwarf_config_h -#define dwarf_config_h - -/* This is FIRST_PSEUDO_REGISTER in GCC, since DWARF_FRAME_REGISTERS is not - explicitly defined. */ -#define DWARF_NUM_PRESERVED_REGS 188 - -#define DWARF_REGNUM_MAP_LENGTH (56 + 2) - -/* Return TRUE if the ADDR_SPACE uses big-endian byte-order. */ -#define dwarf_is_big_endian(addr_space) ((addr_space)->big_endian) - -/* Convert a pointer to a dwarf_cursor structure to a pointer to - unw_cursor_t. */ -#define dwarf_to_cursor(c) ((unw_cursor_t *) (c)) - -typedef struct dwarf_loc -{ - unw_word_t val; -#ifndef UNW_LOCAL_ONLY - unw_word_t type; /* see DWARF_LOC_TYPE_* macros. */ -#endif -} dwarf_loc_t; - -#endif /* dwarf_config_h */ diff -Nru libunwind-1.7.2/include/tdep-tilegx/jmpbuf.h libunwind-1.8.1/include/tdep-tilegx/jmpbuf.h --- libunwind-1.7.2/include/tdep-tilegx/jmpbuf.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-tilegx/jmpbuf.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -/* Use glibc's jump-buffer indices; NPTL peeks at SP: */ - -/* FIXME for Tilegx! */ - -#define JB_SP 4 -#define JB_RP 5 -#define JB_MASK_SAVED 6 -#define JB_MASK 7 diff -Nru libunwind-1.7.2/include/tdep-tilegx/libunwind_i.h libunwind-1.8.1/include/tdep-tilegx/libunwind_i.h --- libunwind-1.7.2/include/tdep-tilegx/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-tilegx/libunwind_i.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,260 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#ifndef TILEGX_LIBUNWIND_I_H -#define TILEGX_LIBUNWIND_I_H - -/* Target-dependent definitions that are internal to libunwind but need - to be shared with target-independent code. */ - -#include -#include -#include - -# include "elf64.h" -#include "mempool.h" -#include "dwarf.h" - -typedef struct -{ - /* no Tilegx-specific fast trace */ -} unw_tdep_frame_t; - -struct unw_addr_space -{ - struct unw_accessors acc; - - int big_endian; - tilegx_abi_t abi; - unsigned int addr_size; - - unw_caching_policy_t caching_policy; - _Atomic uint32_t cache_generation; - unw_word_t dyn_generation; /* see dyn-common.h */ - unw_word_t dyn_info_list_addr; /* (cached) dyn_info_list_addr */ - struct dwarf_rs_cache global_cache; - struct unw_debug_frame_list *debug_frames; -}; - -#define tdep_big_endian(as) ((as)->big_endian) - -struct cursor -{ - struct dwarf_cursor dwarf; /* must be first */ - unw_word_t sigcontext_addr; - unw_word_t sigcontext_sp; - unw_word_t sigcontext_pc; -}; - -#define DWARF_GET_LOC(l) ((l).val) - -#ifndef UNW_REMOTE_ONLY -typedef long tilegx_reg_t; -#endif - -#ifdef UNW_LOCAL_ONLY -#define DWARF_NULL_LOC DWARF_LOC (0, 0) -#define DWARF_IS_NULL_LOC(l) (DWARF_GET_LOC (l) == 0) -#define DWARF_LOC(r, t) ((dwarf_loc_t) { .val = (r) }) -#define DWARF_IS_REG_LOC(l) 0 -#define DWARF_REG_LOC(c,r) (DWARF_LOC((unw_word_t) (intptr_t) \ - tdep_uc_addr((c)->as_arg, (r)), 0)) -#define DWARF_MEM_LOC(c,m) DWARF_LOC ((m), 0) -#define DWARF_FPREG_LOC(c,r) (DWARF_LOC((unw_word_t) (intptr_t) \ - tdep_uc_addr((c)->as_arg, (r)), 0)) - -/* Tilegx has no FP. */ -static inline int -dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val) -{ - Debug (1, "Tielgx has no fp!\n"); - abort(); - return 0; -} - -static inline int -dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val) -{ - Debug (1, "Tielgx has no fp!\n"); - abort(); - return 0; -} - -static inline int -dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val) -{ - if (!DWARF_GET_LOC (loc)) - return -1; - - *val = *(tilegx_reg_t *) (intptr_t) DWARF_GET_LOC (loc); - return 0; -} - -static inline int -dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val) -{ - if (!DWARF_GET_LOC (loc)) - return -1; - - *(tilegx_reg_t *) (intptr_t) DWARF_GET_LOC (loc) = val; - return 0; -} - -#else /* !UNW_LOCAL_ONLY */ -#define DWARF_LOC_TYPE_FP (1 << 0) -#define DWARF_LOC_TYPE_REG (1 << 1) -#define DWARF_NULL_LOC DWARF_LOC (0, 0) -#define DWARF_IS_NULL_LOC(l) \ - ({ dwarf_loc_t _l = (l); _l.val == 0 && _l.type == 0; }) -#define DWARF_LOC(r, t) ((dwarf_loc_t) { .val = (r), .type = (t) }) -#define DWARF_IS_REG_LOC(l) (((l).type & DWARF_LOC_TYPE_REG) != 0) -#define DWARF_IS_FP_LOC(l) (((l).type & DWARF_LOC_TYPE_FP) != 0) -#define DWARF_REG_LOC(c,r) DWARF_LOC((r), DWARF_LOC_TYPE_REG) -#define DWARF_MEM_LOC(c,m) DWARF_LOC ((m), 0) -#define DWARF_FPREG_LOC(c,r) DWARF_LOC((r), (DWARF_LOC_TYPE_REG \ - | DWARF_LOC_TYPE_FP)) - -/* TILEGX has no fp. */ -static inline int -dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val) -{ - Debug (1, "Tielgx has no fp!\n"); - abort(); - return 0; -} - -static inline int -dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val) -{ - Debug (1, "Tielgx has no fp!\n"); - abort(); - return 0; -} - -static inline int -dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val) -{ - if (DWARF_IS_NULL_LOC (loc)) - return -UNW_EBADREG; - - /* If a code-generator were to save a value of type unw_word_t in a - floating-point register, we would have to support this case. I - suppose it could happen with MMX registers, but does it really - happen? */ - assert (!DWARF_IS_FP_LOC (loc)); - - if (DWARF_IS_REG_LOC (loc)) - return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val, - 0, c->as_arg); - - return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), val, - 0, c->as_arg); -} - -static inline int -dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val) -{ - if (DWARF_IS_NULL_LOC (loc)) - return -UNW_EBADREG; - - /* If a code-generator were to save a value of type unw_word_t in a - floating-point register, we would have to support this case. I - suppose it could happen with MMX registers, but does it really - happen? */ - assert (!DWARF_IS_FP_LOC (loc)); - - if (DWARF_IS_REG_LOC (loc)) - return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val, - 1, c->as_arg); - - return (*c->as->acc.access_mem) (c->as, DWARF_GET_LOC (loc), &val, - 1, c->as_arg); -} - -#endif /* !UNW_LOCAL_ONLY */ - -#define tdep_getcontext_trace unw_getcontext -#define tdep_init_done UNW_OBJ(init_done) -#define tdep_needs_initialization UNW_OBJ(needs_initialization) -#define tdep_init UNW_OBJ(init) -/* Platforms that support UNW_INFO_FORMAT_TABLE need to define - tdep_search_unwind_table. */ -#define tdep_search_unwind_table dwarf_search_unwind_table -#define tdep_find_unwind_table dwarf_find_unwind_table -#define tdep_uc_addr UNW_ARCH_OBJ(uc_addr) -#define tdep_get_elf_image UNW_ARCH_OBJ(get_elf_image) -#define tdep_get_exe_image_path UNW_ARCH_OBJ(get_exe_image_path) -#define tdep_access_reg UNW_OBJ(access_reg) -#define tdep_access_fpreg UNW_OBJ(access_fpreg) -#define tdep_fetch_frame(c,ip,n) do {} while(0) -#define tdep_cache_frame(c) 0 -#define tdep_reuse_frame(c,frame) do {} while(0) -#define tdep_stash_frame(c,rs) do {} while(0) -#define tdep_trace(cur,addr,n) (-UNW_ENOINFO) - -#ifdef UNW_LOCAL_ONLY -#define tdep_find_proc_info(c,ip,n) \ - dwarf_find_proc_info((c)->as, (ip), &(c)->pi, (n), \ - (c)->as_arg) -#define tdep_put_unwind_info(as,pi,arg) \ - dwarf_put_unwind_info((as), (pi), (arg)) -#else -#define tdep_find_proc_info(c,ip,n) \ - (*(c)->as->acc.find_proc_info)((c)->as, (ip), &(c)->pi, (n), \ - (c)->as_arg) -#define tdep_put_unwind_info(as,pi,arg) \ - (*(as)->acc.put_unwind_info)((as), (pi), (arg)) -#endif - -#define tdep_get_as(c) ((c)->dwarf.as) -#define tdep_get_as_arg(c) ((c)->dwarf.as_arg) -#define tdep_get_ip(c) ((c)->dwarf.ip) - -extern atomic_bool tdep_init_done; - -extern void tdep_init (void); -extern int tdep_search_unwind_table (unw_addr_space_t as, - unw_word_t ip, - unw_dyn_info_t *di, - unw_proc_info_t *pi, - int need_unwind_info, - void *arg); -extern void *tdep_uc_addr (ucontext_t *uc, int reg); -extern int tdep_get_elf_image (struct elf_image *ei, - pid_t pid, unw_word_t ip, - unsigned long *segbase, - unsigned long *mapoff, - char *path, size_t pathlen); -extern void tdep_get_exe_image_path (char *path); -extern int tdep_access_reg (struct cursor *c, - unw_regnum_t reg, - unw_word_t *valp, - int write); -extern int tdep_access_fpreg (struct cursor *c, - unw_regnum_t reg, - unw_fpreg_t *valp, - int write); - -#endif /* TILEGX_LIBUNWIND_I_H */ diff -Nru libunwind-1.7.2/include/tdep-x86/jmpbuf.h libunwind-1.8.1/include/tdep-x86/jmpbuf.h --- libunwind-1.7.2/include/tdep-x86/jmpbuf.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-x86/jmpbuf.h 2024-02-20 19:54:51.000000000 +0000 @@ -38,5 +38,6 @@ #define JB_RP 0 #define JB_MASK_SAVED 11 #define JB_MASK 7 +#define _JB_STK_SHIFT 4 #endif diff -Nru libunwind-1.7.2/include/tdep-x86/libunwind_i.h libunwind-1.8.1/include/tdep-x86/libunwind_i.h --- libunwind-1.7.2/include/tdep-x86/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-x86/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -46,6 +46,9 @@ struct unw_addr_space { struct unw_accessors acc; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ diff -Nru libunwind-1.7.2/include/tdep-x86_64/jmpbuf.h libunwind-1.8.1/include/tdep-x86_64/jmpbuf.h --- libunwind-1.7.2/include/tdep-x86_64/jmpbuf.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-x86_64/jmpbuf.h 2024-02-20 19:54:51.000000000 +0000 @@ -37,8 +37,13 @@ #define JB_SP 2 #define JB_RP 0 +#ifdef __amd64__ +#define JB_MASK_SAVED 11 +#else /* Pretend the ip cannot be 0 and mask is always saved */ #define JB_MASK_SAVED 0 +#endif #define JB_MASK 9 +#define _JB_STK_SHIFT 8 #endif diff -Nru libunwind-1.7.2/include/tdep-x86_64/libunwind_i.h libunwind-1.8.1/include/tdep-x86_64/libunwind_i.h --- libunwind-1.7.2/include/tdep-x86_64/libunwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/include/tdep-x86_64/libunwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -65,6 +65,9 @@ struct unw_addr_space { struct unw_accessors acc; +#ifndef UNW_REMOTE_ONLY + unw_iterate_phdr_func_t iterate_phdr_function; +#endif unw_caching_policy_t caching_policy; _Atomic uint32_t cache_generation; unw_word_t dyn_generation; /* see dyn-common.h */ @@ -172,7 +175,7 @@ #endif /* !UNW_LOCAL_ONLY */ static inline int -dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val) +dwarf_getfp (struct dwarf_cursor *c UNUSED, dwarf_loc_t loc, unw_fpreg_t *val UNUSED) { if (DWARF_IS_NULL_LOC (loc)) return -UNW_EBADREG; @@ -181,7 +184,7 @@ } static inline int -dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val) +dwarf_putfp (struct dwarf_cursor *c UNUSED, dwarf_loc_t loc, unw_fpreg_t val UNUSED) { if (DWARF_IS_NULL_LOC (loc)) return -UNW_EBADREG; @@ -224,7 +227,6 @@ #define tdep_getcontext_trace UNW_ARCH_OBJ(getcontext_trace) #define tdep_init_done UNW_OBJ(init_done) -#define tdep_init_mem_validate UNW_OBJ(init_mem_validate) #define tdep_init UNW_OBJ(init) /* Platforms that support UNW_INFO_FORMAT_TABLE need to define tdep_search_unwind_table. */ @@ -269,7 +271,6 @@ extern atomic_bool tdep_init_done; extern void tdep_init (void); -extern void tdep_init_mem_validate (void); extern int tdep_search_unwind_table (unw_addr_space_t as, unw_word_t ip, unw_dyn_info_t *di, unw_proc_info_t *pi, int need_unwind_info, void *arg); @@ -288,9 +289,9 @@ extern int tdep_cache_frame (struct dwarf_cursor *c); extern void tdep_reuse_frame (struct dwarf_cursor *c, int frame); +#endif extern void tdep_stash_frame (struct dwarf_cursor *c, struct dwarf_reg_state *rs); -#endif extern int tdep_getcontext_trace (unw_tdep_context_t *); extern int tdep_trace (unw_cursor_t *cursor, void **addresses, int *n); diff -Nru libunwind-1.7.2/m4/libtool.m4 libunwind-1.8.1/m4/libtool.m4 --- libunwind-1.7.2/m4/libtool.m4 2023-07-30 11:33:06.000000000 +0000 +++ libunwind-1.8.1/m4/libtool.m4 2024-02-22 14:09:12.000000000 +0000 @@ -728,7 +728,6 @@ cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. @@ -1042,8 +1041,8 @@ _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF @@ -1493,7 +1492,7 @@ m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} -: ${AR_FLAGS=cru} +: ${AR_FLAGS=cr} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) @@ -4064,7 +4063,8 @@ if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -4704,6 +4704,12 @@ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -6439,7 +6445,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no @@ -6814,7 +6820,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6879,7 +6885,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -7218,7 +7224,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support @@ -7302,7 +7308,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -7313,7 +7319,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' diff -Nru libunwind-1.7.2/src/Makefile.am libunwind-1.8.1/src/Makefile.am --- libunwind-1.7.2/src/Makefile.am 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/Makefile.am 2024-02-21 13:39:50.000000000 +0000 @@ -1,6 +1,30 @@ -SOVERSION=8:1:0 # See comments at end of file. +# +# This file is a part of the libunwind project. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# This permission notice shall be included in all copies or substantial portions +# of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + +# Set the DSO versions +SOVERSION=9:0:1 # See comments at end of file. SETJMP_SO_VERSION=0:0:0 COREDUMP_SO_VERSION=0:0:0 + # # Don't link with start-files since we don't use any constructors/destructors: # @@ -9,7 +33,7 @@ # # Which libraries to build and install # -# Order is important here. The names of teh libraries need to end up in reverse +# Order is important here. The names of the libraries need to end up in reverse # dependency order for `make install` to do its job properly. # lib_LTLIBRARIES = @@ -49,9 +73,6 @@ if ARCH_SH lib_LTLIBRARIES += libunwind-sh.la endif -if ARCH_TILEGX - lib_LTLIBRARIES += libunwind-tilegx.la -endif if ARCH_X86 lib_LTLIBRARIES += libunwind-x86.la endif @@ -62,6 +83,9 @@ if BUILD_COREDUMP lib_LTLIBRARIES += libunwind-coredump.la endif +if BUILD_NTO + lib_LTLIBRARIES += libunwind-nto.la +endif if BUILD_PTRACE lib_LTLIBRARIES += libunwind-ptrace.la endif @@ -72,160 +96,233 @@ noinst_HEADERS = noinst_LTLIBRARIES = +if USE_ELF32 +libunwind_elf_libs = libunwind-elf32.la +endif +if USE_ELF64 +libunwind_elf_libs = libunwind-elf64.la +endif +if USE_ELFXX +libunwind_elf_libs = libunwind-elfxx.la +endif + +# If local unwinding is being built, link in the local unwinding functions +libunwind_libadd = +if !REMOTE_ONLY + libunwind_libadd += libunwind.la -lc +endif + +### pkg-config: pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libunwind-generic.pc if !REMOTE_ONLY pkgconfig_DATA += unwind/libunwind.pc endif - +if BUILD_COREDUMP +pkgconfig_DATA += coredump/libunwind-coredump.pc +endif if BUILD_PTRACE pkgconfig_DATA += ptrace/libunwind-ptrace.pc endif - if BUILD_SETJMP pkgconfig_DATA += setjmp/libunwind-setjmp.pc endif -if BUILD_COREDUMP -pkgconfig_DATA += coredump/libunwind-coredump.pc -endif - -### libunwind-ptrace: -libunwind_ptrace_la_SOURCES = \ - ptrace/_UPT_elf.c \ - ptrace/_UPT_accessors.c ptrace/_UPT_access_fpreg.c \ - ptrace/_UPT_access_mem.c ptrace/_UPT_access_reg.c \ - ptrace/_UPT_create.c ptrace/_UPT_destroy.c \ - ptrace/_UPT_find_proc_info.c ptrace/_UPT_get_dyn_info_list_addr.c \ - ptrace/_UPT_put_unwind_info.c ptrace/_UPT_get_proc_name.c \ - ptrace/_UPT_reg_offset.c ptrace/_UPT_resume.c -libunwind_ptrace_la_LIBADD = libunwind-$(arch).la $(LIBLZMA) -noinst_HEADERS += ptrace/_UPT_internal.h - ### libunwind-coredump: -libunwind_coredump_la_SOURCES = \ - coredump/_UCD_accessors.c \ - coredump/_UCD_create.c \ - coredump/_UCD_destroy.c \ - coredump/_UCD_access_mem.c \ - coredump/_UCD_elf_map_image.c \ - coredump/_UCD_find_proc_info.c \ - coredump/_UCD_get_proc_name.c \ - coredump/_UCD_corefile_elf.c \ - coredump/ucd_file_table.c \ +noinst_HEADERS += coredump/_UCD_internal.h \ + coredump/_UCD_lib.h \ + coredump/ucd_file_table.h +libunwind_coredump_la_SOURCES = \ + coredump/_UCD_access_mem.c \ + coredump/_UCD_accessors.c \ + coredump/_UCD_corefile_elf.c \ + coredump/_UCD_create.c \ + coredump/_UCD_destroy.c \ + coredump/_UCD_elf_map_image.c \ + coredump/ucd_file_table.c \ + coredump/_UCD_find_proc_info.c \ + coredump/_UCD_get_proc_name.c \ + coredump/_UCD_get_elf_filename.c \ \ - coredump/_UPT_elf.c \ - coredump/_UPT_access_fpreg.c \ + mi/init.c \ + coredump/_UPT_elf.c \ + coredump/_UPT_access_fpreg.c \ coredump/_UPT_get_dyn_info_list_addr.c \ - coredump/_UPT_put_unwind_info.c \ + coredump/_UPT_put_unwind_info.c \ coredump/_UPT_resume.c -libunwind_coredump_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \ - -version-info $(COREDUMP_SO_VERSION) -libunwind_coredump_la_LIBADD = libunwind-$(arch).la $(LIBLZMA) $(LIBZ) -noinst_HEADERS += coredump/_UCD_internal.h \ - coredump/_UCD_lib.h \ - coredump/ucd_file_table.h +libunwind_coredump_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(COREDUMP_SO_VERSION) +libunwind_coredump_la_LIBADD = \ + libunwind-$(arch).la \ + $(LIBLZMA) $(LIBZ) + +### libunwind-nto: +noinst_HEADERS += nto/unw_nto_internal.h +libunwind_nto_la_SOURCES = \ + mi/init.c \ + nto/unw_nto_access_fpreg.c \ + nto/unw_nto_access_mem.c \ + nto/unw_nto_accessors.c \ + nto/unw_nto_access_reg.c \ + nto/unw_nto_create.c \ + nto/unw_nto_destroy.c \ + nto/unw_nto_elf.c \ + nto/unw_nto_find_proc_info.c \ + nto/unw_nto_get_dyn_info_list_addr.c \ + nto/unw_nto_get_proc_name.c \ + nto/unw_nto_get_elf_filename.c \ + nto/unw_nto_put_unwind_info.c \ + nto/unw_nto_resume.c +libunwind_nto_la_LIBADD = \ + libunwind-$(arch).la \ + $(libunwind_libadd) -### libunwind-setjmp: -libunwind_setjmp_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \ - -version-info $(SETJMP_SO_VERSION) - -if USE_ELF32 -LIBUNWIND_ELF = libunwind-elf32.la -endif -if USE_ELF64 -LIBUNWIND_ELF = libunwind-elf64.la -endif -if USE_ELFXX -LIBUNWIND_ELF = libunwind-elfxx.la -endif +### libunwind-ptrace: +noinst_HEADERS += ptrace/_UPT_internal.h +libunwind_ptrace_la_SOURCES = \ + mi/init.c \ + ptrace/_UPT_access_fpreg.c \ + ptrace/_UPT_access_mem.c \ + ptrace/_UPT_accessors.c \ + ptrace/_UPT_access_reg.c \ + ptrace/_UPT_create.c \ + ptrace/_UPT_destroy.c \ + ptrace/_UPT_elf.c \ + ptrace/_UPT_find_proc_info.c \ + ptrace/_UPT_get_dyn_info_list_addr.c \ + ptrace/_UPT_get_proc_name.c \ + ptrace/_UPT_get_elf_filename.c \ + ptrace/_UPT_put_unwind_info.c \ + ptrace/_UPT_reg_offset.c \ + ptrace/_UPT_resume.c +libunwind_ptrace_la_LIBADD = \ + libunwind-$(arch).la \ + $(LIBLZMA) $(LIBZ) -libunwind_setjmp_la_LIBADD = $(LIBUNWIND_ELF) \ - libunwind-$(arch).la \ - libunwind.la -lc -libunwind_setjmp_la_SOURCES = setjmp/longjmp.c \ - setjmp/siglongjmp.c -noinst_HEADERS += setjmp/setjmp_i.h +### libunwind-setjmp: +noinst_HEADERS += setjmp/setjmp_i.h +libunwind_setjmp_la_SOURCES = \ + mi/init.c \ + setjmp/longjmp.c \ + setjmp/siglongjmp.c +libunwind_setjmp_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SETJMP_SO_VERSION) +libunwind_setjmp_la_LIBADD = \ + $(libunwind_elf_libs) \ + libunwind-$(arch).la \ + $(libunwind_libadd) ### libunwind: libunwind_la_LIBADD = # List of arch-independent files needed by both local-only and generic # libraries: -libunwind_la_SOURCES_common = \ - $(libunwind_la_SOURCES_os) \ - mi/init.c mi/flush_cache.c mi/mempool.c mi/strerror.c +libunwind_la_SOURCES_common = \ + $(libunwind_la_SOURCES_os) \ + mi/init.c \ + mi/flush_cache.c \ + mi/mempool.c \ + mi/strerror.c # List of arch-independent files needed by generic library (libunwind-$ARCH): -libunwind_la_SOURCES_generic = \ - mi/Gdyn-extract.c mi/Gdyn-remote.c mi/Gfind_dynamic_proc_info.c \ - mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c \ - mi/Gput_dynamic_unwind_info.c mi/Gdestroy_addr_space.c \ - mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c \ - mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c +libunwind_la_SOURCES_generic = \ + mi/Gaddress_validator.c \ + mi/Gdestroy_addr_space.c \ + mi/Gdyn-extract.c \ + mi/Gdyn-remote.c \ + mi/Gfind_dynamic_proc_info.c \ + mi/Gget_accessors.c \ + mi/Gget_fpreg.c \ + mi/Gget_proc_info_by_ip.c \ + mi/Gget_proc_name.c \ + mi/Gget_reg.c \ + mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c \ + mi/Gset_caching_policy.c \ + mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c \ + mi/Gset_reg.c \ + mi/Gget_elf_filename.c if SUPPORT_CXX_EXCEPTIONS -libunwind_la_SOURCES_local_unwind = \ - unwind/Backtrace.c unwind/DeleteException.c \ - unwind/FindEnclosingFunction.c unwind/ForcedUnwind.c \ - unwind/GetBSP.c unwind/GetCFA.c unwind/GetDataRelBase.c \ - unwind/GetGR.c unwind/GetIP.c unwind/GetLanguageSpecificData.c \ - unwind/GetRegionStart.c unwind/GetTextRelBase.c \ - unwind/RaiseException.c unwind/Resume.c \ - unwind/Resume_or_Rethrow.c unwind/SetGR.c unwind/SetIP.c \ - unwind/GetIPInfo.c +libunwind_la_SOURCES_local_unwind = \ + unwind/Backtrace.c \ + unwind/DeleteException.c \ + unwind/FindEnclosingFunction.c \ + unwind/ForcedUnwind.c \ + unwind/GetBSP.c \ + unwind/GetCFA.c \ + unwind/GetDataRelBase.c \ + unwind/GetGR.c \ + unwind/GetIP.c \ + unwind/GetIPInfo.c \ + unwind/GetLanguageSpecificData.c \ + unwind/GetRegionStart.c \ + unwind/GetTextRelBase.c \ + unwind/RaiseException.c \ + unwind/Resume.c \ + unwind/Resume_or_Rethrow.c \ + unwind/SetGR.c \ + unwind/SetIP.c # _ReadULEB()/_ReadSLEB() are needed for Intel C++ 8.0 compatibility -libunwind_la_SOURCES_os_linux_local = mi/_ReadULEB.c mi/_ReadSLEB.c -endif +libunwind_la_SOURCES_os_linux_local = \ + mi/_ReadULEB.c \ + mi/_ReadSLEB.c +endif SUPPORT_CXX_EXCEPTIONS # List of arch-independent files needed by local-only library (libunwind): -libunwind_la_SOURCES_local_nounwind = \ - $(libunwind_la_SOURCES_os_local) \ - mi/backtrace.c \ - mi/dyn-cancel.c mi/dyn-info-list.c mi/dyn-register.c \ - mi/Ldyn-extract.c mi/Lfind_dynamic_proc_info.c \ - mi/Lget_accessors.c \ - mi/Lget_proc_info_by_ip.c mi/Lget_proc_name.c \ - mi/Lget_proc_info_in_range.c \ - mi/Lput_dynamic_unwind_info.c mi/Ldestroy_addr_space.c \ - mi/Lget_reg.c mi/Lset_reg.c \ - mi/Lget_fpreg.c mi/Lset_fpreg.c \ - mi/Lset_caching_policy.c \ - mi/Lset_cache_size.c +libunwind_la_SOURCES_local_nounwind = \ + $(libunwind_la_SOURCES_os_local) \ + mi/backtrace.c \ + mi/dyn-cancel.c \ + mi/dyn-info-list.c \ + mi/dyn-register.c \ + mi/Laddress_validator.c \ + mi/Ldestroy_addr_space.c \ + mi/Ldyn-extract.c \ + mi/Lfind_dynamic_proc_info.c \ + mi/Lget_accessors.c \ + mi/Lget_fpreg.c mi/Lset_fpreg.c \ + mi/Lget_proc_info_by_ip.c \ + mi/Lget_proc_name.c \ + mi/Lget_reg.c \ + mi/Lput_dynamic_unwind_info.c \ + mi/Lset_cache_size.c \ + mi/Lset_caching_policy.c \ + mi/Lset_iterate_phdr_function.c \ + mi/Lset_reg.c \ + mi/Lget_elf_filename.c -libunwind_la_SOURCES_local = \ - $(libunwind_la_SOURCES_local_nounwind) \ +libunwind_la_SOURCES_local = \ + $(libunwind_la_SOURCES_local_nounwind) \ $(libunwind_la_SOURCES_local_unwind) noinst_HEADERS += os-linux.h -libunwind_la_SOURCES_os_linux = os-linux.c dl-iterate-phdr.c - -libunwind_la_SOURCES_os_hpux = os-hpux.c - -libunwind_la_SOURCES_os_freebsd = os-freebsd.c - -libunwind_la_SOURCES_os_qnx = os-qnx.c - -libunwind_la_SOURCES_os_solaris = os-solaris.c libunwind_dwarf_common_la_SOURCES = dwarf/global.c -libunwind_dwarf_local_la_SOURCES = \ - dwarf/Lexpr.c dwarf/Lfde.c dwarf/Lparser.c dwarf/Lpe.c \ - dwarf/Lfind_proc_info-lsb.c \ - dwarf/Lfind_unwind_table.c +libunwind_dwarf_local_la_SOURCES = \ + dwarf/Lexpr.c \ + dwarf/Lfde.c \ + dwarf/Lfind_proc_info-lsb.c \ + dwarf/Lfind_unwind_table.c \ + dwarf/Lget_proc_info_in_range.c \ + dwarf/Lparser.c \ + dwarf/Lpe.c libunwind_dwarf_local_la_LIBADD = libunwind-dwarf-common.la -libunwind_dwarf_generic_la_SOURCES = \ - dwarf/Gexpr.c dwarf/Gfde.c dwarf/Gparser.c dwarf/Gpe.c \ - dwarf/Gfind_proc_info-lsb.c \ - dwarf/Gfind_unwind_table.c +libunwind_dwarf_generic_la_SOURCES = \ + dwarf/Gexpr.c \ + dwarf/Gfde.c \ + dwarf/Gfind_proc_info-lsb.c \ + dwarf/Gfind_unwind_table.c \ + dwarf/Gget_proc_info_in_range.c \ + dwarf/Gparser.c \ + dwarf/Gpe.c libunwind_dwarf_generic_la_LIBADD = libunwind-dwarf-common.la if USE_DWARF @@ -245,354 +342,878 @@ libunwind_elf64_la_LIBADD = $(LIBLZMA) $(LIBZ) libunwind_elfxx_la_LIBADD = $(LIBLZMA) $(LIBZ) -noinst_LTLIBRARIES += $(LIBUNWIND_ELF) -libunwind_la_LIBADD += $(LIBUNWIND_ELF) +noinst_LTLIBRARIES += $(libunwind_elf_libs) +libunwind_la_LIBADD += $(libunwind_elf_libs) + +if OS_LINUX + libunwind_la_SOURCES_os = os-linux.c dl-iterate-phdr.c + libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_linux_local) + libunwind_la_SOURCES_aarch64_os = aarch64/Gos-linux.c + libunwind_la_SOURCES_aarch64_os_local = aarch64/Los-linux.c + libunwind_la_SOURCES_arm_os = arm/Gos-linux.c + libunwind_la_SOURCES_arm_os_local = arm/Los-linux.c + libunwind_la_SOURCES_x86_os = x86/Gos-linux.c + libunwind_la_SOURCES_x86_os_local = x86/Los-linux.c x86/getcontext-linux.S + libunwind_la_SOURCES_x86_64_os = x86_64/Gos-linux.c + libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-linux.c + libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_linux.c + libunwind_coredump_la_SOURCES += coredump/_UCD_get_threadinfo_prstatus.c + libunwind_coredump_la_SOURCES += coredump/_UCD_get_mapinfo_linux.c +endif + +if OS_HPUX + libunwind_la_SOURCES_os = os-hpux.c + libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_hpux_local) +endif +if OS_FREEBSD + libunwind_la_SOURCES_os = os-freebsd.c + libunwind_la_SOURCES_aarch64_os = aarch64/Gos-freebsd.c + libunwind_la_SOURCES_aarch64_os_local = aarch64/Los-freebsd.c aarch64/setcontext.S + libunwind_la_SOURCES_arm_os = arm/Gos-freebsd.c + libunwind_la_SOURCES_arm_os_local = arm/Los-freebsd.c + libunwind_la_SOURCES_x86_os = x86/Gos-freebsd.c + libunwind_la_SOURCES_x86_os_local = x86/Los-freebsd.c x86/getcontext-freebsd.S + libunwind_la_SOURCES_x86_64_os = x86_64/Gos-freebsd.c + libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-freebsd.c + libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_freebsd.c + libunwind_coredump_la_SOURCES += coredump/_UCD_get_threadinfo_prstatus.c + libunwind_coredump_la_SOURCES += coredump/_UCD_get_mapinfo_generic.c +endif + +if OS_SOLARIS + libunwind_la_SOURCES_os = os-solaris.c + libunwind_la_SOURCES_x86_64_os = x86_64/Gos-solaris.c + libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-solaris.c +endif + +if OS_QNX + libunwind_la_SOURCES_os = os-qnx.c + libunwind_la_SOURCES_aarch64_os = aarch64/Gos-qnx.c + libunwind_la_SOURCES_aarch64_os_local = aarch64/Los-qnx.c + libunwind_la_SOURCES_arm_os = arm/Gos-other.c + libunwind_la_SOURCES_arm_os_local = arm/Los-other.c + libunwind_la_SOURCES_x86_64_os = x86_64/Gos-qnx.c + libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-qnx.c + libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_qnx.c + libunwind_coredump_la_SOURCES += coredump/_UCD_get_threadinfo_prstatus.c + libunwind_coredump_la_SOURCES += coredump/_UCD_get_mapinfo_qnx.c +endif + +### target AArch64: # The list of files that go into libunwind and libunwind-aarch64: -noinst_HEADERS += aarch64/init.h aarch64/offsets.h aarch64/unwind_i.h -libunwind_la_SOURCES_aarch64_common = $(libunwind_la_SOURCES_common) \ - aarch64/is_fpreg.c aarch64/regname.c - -# The list of files that go into libunwind: -libunwind_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \ - $(libunwind_la_SOURCES_local) \ - aarch64/Lapply_reg_state.c aarch64/Lreg_states_iterate.c \ - aarch64/Lcreate_addr_space.c aarch64/Lget_proc_info.c \ - aarch64/Lget_save_loc.c aarch64/Lglobal.c aarch64/Linit.c \ - aarch64/Linit_local.c aarch64/Linit_remote.c \ - aarch64/Lis_signal_frame.c aarch64/Lregs.c aarch64/Lresume.c \ - aarch64/Lstash_frame.c aarch64/Lstep.c aarch64/Ltrace.c \ - aarch64/getcontext.S - -libunwind_aarch64_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \ - $(libunwind_la_SOURCES_generic) \ - aarch64/Gapply_reg_state.c aarch64/Greg_states_iterate.c \ - aarch64/Gcreate_addr_space.c aarch64/Gget_proc_info.c \ - aarch64/Gget_save_loc.c aarch64/Gglobal.c aarch64/Ginit.c \ - aarch64/Ginit_local.c aarch64/Ginit_remote.c \ - aarch64/Gis_signal_frame.c aarch64/Gregs.c aarch64/Gresume.c \ - aarch64/Gstash_frame.c aarch64/Gstep.c aarch64/Gtrace.c +noinst_HEADERS += aarch64/init.h aarch64/ucontext_i.h aarch64/unwind_i.h +libunwind_la_SOURCES_aarch64_common = \ + $(libunwind_la_SOURCES_common) \ + aarch64/is_fpreg.c \ + aarch64/regname.c + +# The list of files that go into libunwind: +if ARCH_AARCH64 +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_aarch64_common) \ + $(libunwind_la_SOURCES_local) \ + $(libunwind_la_SOURCES_aarch64_os_local) \ + aarch64/getcontext.S \ + aarch64/Lapply_reg_state.c \ + aarch64/Lcreate_addr_space.c \ + aarch64/Lget_proc_info.c \ + aarch64/Lget_save_loc.c \ + aarch64/Lglobal.c \ + aarch64/Linit.c \ + aarch64/Linit_local.c \ + aarch64/Linit_remote.c \ + aarch64/Lis_signal_frame.c \ + aarch64/Lregs.c \ + aarch64/Lreg_states_iterate.c \ + aarch64/Lresume.c \ + aarch64/Lstash_frame.c \ + aarch64/Lstep.c \ + aarch64/Ltrace.c + +libunwind_setjmp_la_SOURCES += \ + aarch64/longjmp.S \ + aarch64/siglongjmp.S +endif ARCH_AARCH64 + +libunwind_aarch64_la_SOURCES = \ + $(libunwind_la_SOURCES_aarch64_common) \ + $(libunwind_la_SOURCES_generic) \ + $(libunwind_la_SOURCES_aarch64_os) \ + aarch64/Gapply_reg_state.c \ + aarch64/Gcreate_addr_space.c \ + aarch64/Gget_proc_info.c \ + aarch64/Gget_save_loc.c \ + aarch64/Gglobal.c \ + aarch64/Ginit.c \ + aarch64/Ginit_local.c \ + aarch64/Ginit_remote.c \ + aarch64/Gis_signal_frame.c \ + aarch64/Gregs.c \ + aarch64/Greg_states_iterate.c \ + aarch64/Gresume.c \ + aarch64/Gstash_frame.c \ + aarch64/Gstep.c \ + aarch64/Gtrace.c +libunwind_aarch64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_aarch64_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) +### target ARMv7: # The list of files that go into libunwind and libunwind-arm: -noinst_HEADERS += arm/init.h arm/offsets.h arm/unwind_i.h -libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common) \ +noinst_HEADERS += \ + arm/init.h \ + arm/offsets.h \ + arm/unwind_i.h +libunwind_la_SOURCES_arm_common = \ + $(libunwind_la_SOURCES_common) \ arm/is_fpreg.c arm/regname.c # The list of files that go into libunwind: -libunwind_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \ - $(libunwind_la_SOURCES_arm_os_local) \ - $(libunwind_la_SOURCES_local) \ - arm/getcontext.S \ - arm/Lapply_reg_state.c arm/Lreg_states_iterate.c \ - arm/Lcreate_addr_space.c arm/Lget_proc_info.c arm/Lget_save_loc.c \ - arm/Lglobal.c arm/Linit.c arm/Linit_local.c arm/Linit_remote.c \ - arm/Lregs.c arm/Lresume.c arm/Lstep.c \ - arm/Lex_tables.c arm/Lstash_frame.c arm/Ltrace.c - -# The list of files that go into libunwind-arm: -libunwind_arm_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \ - $(libunwind_la_SOURCES_arm_os) \ - $(libunwind_la_SOURCES_generic) \ - arm/Gapply_reg_state.c arm/Greg_states_iterate.c \ - arm/Gcreate_addr_space.c arm/Gget_proc_info.c arm/Gget_save_loc.c \ - arm/Gglobal.c arm/Ginit.c arm/Ginit_local.c arm/Ginit_remote.c \ - arm/Gregs.c arm/Gresume.c arm/Gstep.c \ - arm/Gex_tables.c arm/Gstash_frame.c arm/Gtrace.c - -# The list of files that go both into libunwind and libunwind-ia64: -noinst_HEADERS += ia64/init.h ia64/offsets.h ia64/regs.h \ - ia64/ucontext_i.h ia64/unwind_decoder.h ia64/unwind_i.h -libunwind_la_SOURCES_ia64_common = $(libunwind_la_SOURCES_common) \ - ia64/regname.c -libunwind_la_EXTRAS_ia64 = ia64/mk_cursor_i ia64/mk_Lcursor_i.c \ - ia64/mk_Gcursor_i.c +if ARCH_ARM +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_arm_common) \ + $(libunwind_la_SOURCES_arm_os_local) \ + $(libunwind_la_SOURCES_local) \ + arm/getcontext.S \ + arm/Lapply_reg_state.c \ + arm/Lcreate_addr_space.c \ + arm/Lex_tables.c \ + arm/Lget_proc_info.c \ + arm/Lget_save_loc.c \ + arm/Lglobal.c arm/Linit.c \ + arm/Linit_local.c \ + arm/Linit_remote.c \ + arm/Lregs.c \ + arm/Lreg_states_iterate.c \ + arm/Lresume.c \ + arm/Lstash_frame.c \ + arm/Lstep.c \ + arm/Ltrace.c -# The list of files that go into libunwind: -libunwind_la_SOURCES_ia64 = $(libunwind_la_SOURCES_ia64_common) \ - $(libunwind_la_SOURCES_local) \ - \ - ia64/dyn_info_list.S ia64/getcontext.S \ - \ - ia64/Lapply_reg_state.c ia64/Lreg_states_iterate.c \ - ia64/Lcreate_addr_space.c ia64/Lget_proc_info.c ia64/Lget_save_loc.c \ - ia64/Lglobal.c ia64/Linit.c ia64/Linit_local.c ia64/Linit_remote.c \ - ia64/Linstall_cursor.S ia64/Lis_signal_frame.c ia64/Lparser.c \ - ia64/Lrbs.c ia64/Lregs.c ia64/Lresume.c ia64/Lscript.c ia64/Lstep.c \ - ia64/Ltables.c ia64/Lfind_unwind_table.c +libunwind_setjmp_la_SOURCES += arm/siglongjmp.S +endif # ARCH_ARM -# The list of files that go into libunwind-ia64: -libunwind_ia64_la_SOURCES_ia64 = $(libunwind_la_SOURCES_ia64_common) \ - $(libunwind_la_SOURCES_generic) \ - ia64/Gapply_reg_state.c ia64/Greg_states_iterate.c \ - ia64/Gcreate_addr_space.c ia64/Gget_proc_info.c ia64/Gget_save_loc.c \ - ia64/Gglobal.c ia64/Ginit.c ia64/Ginit_local.c ia64/Ginit_remote.c \ - ia64/Ginstall_cursor.S ia64/Gis_signal_frame.c ia64/Gparser.c \ - ia64/Grbs.c ia64/Gregs.c ia64/Gresume.c ia64/Gscript.c ia64/Gstep.c \ - ia64/Gtables.c ia64/Gfind_unwind_table.c +# The list of files that go into libunwind-arm: +libunwind_arm_la_SOURCES = \ + $(libunwind_la_SOURCES_arm_common) \ + $(libunwind_la_SOURCES_arm_os) \ + $(libunwind_la_SOURCES_generic) \ + arm/Gapply_reg_state.c \ + arm/Gcreate_addr_space.c \ + arm/Gex_tables.c \ + arm/Gget_proc_info.c \ + arm/Gget_save_loc.c \ + arm/Gglobal.c \ + arm/Ginit.c \ + arm/Ginit_local.c \ + arm/Ginit_remote.c \ + arm/Gregs.c \ + arm/Greg_states_iterate.c \ + arm/Gresume.c \ + arm/Gstash_frame.c \ + arm/Gstep.c \ + arm/Gtrace.c +libunwind_arm_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_arm_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) +### target HP-PA: # The list of files that go both into libunwind and libunwind-hppa: -noinst_HEADERS += hppa/init.h hppa/offsets.h hppa/unwind_i.h -libunwind_la_SOURCES_hppa_common = $(libunwind_la_SOURCES_common) \ +noinst_HEADERS += \ + hppa/init.h \ + hppa/offsets.h \ + hppa/unwind_i.h +libunwind_la_SOURCES_hppa_common = \ + $(libunwind_la_SOURCES_common) \ hppa/regname.c +if ARCH_HPPA # The list of files that go into libunwind: -libunwind_la_SOURCES_hppa = $(libunwind_la_SOURCES_hppa_common) \ - $(libunwind_la_SOURCES_local) \ - hppa/getcontext.S hppa/setcontext.S \ - hppa/Lapply_reg_state.c hppa/Lreg_states_iterate.c \ - hppa/Lcreate_addr_space.c hppa/Lget_save_loc.c hppa/Lglobal.c \ - hppa/Linit.c hppa/Linit_local.c hppa/Linit_remote.c \ - hppa/Lis_signal_frame.c hppa/Lget_proc_info.c hppa/Lregs.c \ - hppa/Lresume.c hppa/Lstep.c +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_hppa_common) \ + $(libunwind_la_SOURCES_local) \ + hppa/getcontext.S \ + hppa/Lapply_reg_state.c \ + hppa/Lcreate_addr_space.c \ + hppa/Lget_proc_info.c \ + hppa/Lget_save_loc.c \ + hppa/Lglobal.c \ + hppa/Linit.c \ + hppa/Linit_local.c \ + hppa/Linit_remote.c \ + hppa/Lis_signal_frame.c \ + hppa/Lregs.c \ + hppa/Lreg_states_iterate.c \ + hppa/Lresume.c \ + hppa/Lstep.c \ + hppa/setcontext.S + +libunwind_setjmp_la_SOURCES += hppa/siglongjmp.S +endif # ARCH_HPPA # The list of files that go into libunwind-hppa: -libunwind_hppa_la_SOURCES_hppa = $(libunwind_la_SOURCES_hppa_common) \ - $(libunwind_la_SOURCES_generic) \ - hppa/Gapply_reg_state.c hppa/Greg_states_iterate.c \ - hppa/Gcreate_addr_space.c hppa/Gget_save_loc.c hppa/Gglobal.c \ - hppa/Ginit.c hppa/Ginit_local.c hppa/Ginit_remote.c \ - hppa/Gis_signal_frame.c hppa/Gget_proc_info.c hppa/Gregs.c \ - hppa/Gresume.c hppa/Gstep.c +libunwind_hppa_la_SOURCES = \ + $(libunwind_la_SOURCES_hppa_common) \ + $(libunwind_la_SOURCES_generic) \ + hppa/Gapply_reg_state.c \ + hppa/Gcreate_addr_space.c \ + hppa/Gget_proc_info.c \ + hppa/Gget_save_loc.c \ + hppa/Gglobal.c \ + hppa/Ginit.c \ + hppa/Ginit_local.c \ + hppa/Ginit_remote.c \ + hppa/Gis_signal_frame.c \ + hppa/Gregs.c \ + hppa/Greg_states_iterate.c \ + hppa/Gresume.c \ + hppa/Gstep.c +libunwind_hppa_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_hppa_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) -# The list of files that go info libunwind and libunwind-mips: -noinst_HEADERS += mips/init.h mips/offsets.h mips/unwind_i.h -libunwind_la_SOURCES_mips_common = $(libunwind_la_SOURCES_common) \ - mips/is_fpreg.c mips/regname.c - -# The list of files that go into libunwind: -libunwind_la_SOURCES_mips = $(libunwind_la_SOURCES_mips_common) \ - $(libunwind_la_SOURCES_local) \ - mips/getcontext.S \ - mips/Lapply_reg_state.c mips/Lreg_states_iterate.c \ - mips/Lcreate_addr_space.c mips/Lget_proc_info.c mips/Lget_save_loc.c \ - mips/Lglobal.c mips/Linit.c mips/Linit_local.c mips/Linit_remote.c \ - mips/Lis_signal_frame.c mips/Lregs.c mips/Lresume.c mips/Lstep.c - -libunwind_mips_la_SOURCES_mips = $(libunwind_la_SOURCES_mips_common) \ - $(libunwind_la_SOURCES_generic) \ - mips/Gapply_reg_state.c mips/Greg_states_iterate.c \ - mips/Gcreate_addr_space.c mips/Gget_proc_info.c mips/Gget_save_loc.c \ - mips/Gglobal.c mips/Ginit.c mips/Ginit_local.c mips/Ginit_remote.c \ - mips/Gis_signal_frame.c mips/Gregs.c mips/Gresume.c mips/Gstep.c - -# The list of files that go info libunwind and libunwind-tilegx: -noinst_HEADERS += tilegx/init.h tilegx/offsets.h tilegx/unwind_i.h -libunwind_la_SOURCES_tilegx_common = $(libunwind_la_SOURCES_common) \ - tilegx/is_fpreg.c tilegx/regname.c - -# The list of files that go into libunwind: -libunwind_la_SOURCES_tilegx = $(libunwind_la_SOURCES_tilegx_common) \ - $(libunwind_la_SOURCES_local) \ - tilegx/getcontext.S \ - tilegx/Lapply_reg_state.c tilegx/Lreg_states_iterate.c \ - tilegx/Lcreate_addr_space.c tilegx/Lget_proc_info.c tilegx/Lget_save_loc.c \ - tilegx/Lglobal.c tilegx/Linit.c tilegx/Linit_local.c tilegx/Linit_remote.c \ - tilegx/Lis_signal_frame.c tilegx/Lregs.c tilegx/Lresume.c tilegx/Lstep.c - -libunwind_tilegx_la_SOURCES_tilegx = $(libunwind_la_SOURCES_tilegx_common) \ - $(libunwind_la_SOURCES_generic) \ - tilegx/Gapply_reg_state.c tilegx/Greg_states_iterate.c \ - tilegx/Gcreate_addr_space.c tilegx/Gget_proc_info.c tilegx/Gget_save_loc.c \ - tilegx/Gglobal.c tilegx/Ginit.c tilegx/Ginit_local.c tilegx/Ginit_remote.c \ - tilegx/Gis_signal_frame.c tilegx/Gregs.c tilegx/Gresume.c tilegx/Gstep.c +### target IA-64: +# The list of files that go both into libunwind and libunwind-ia64: +noinst_HEADERS += \ + ia64/init.h \ + ia64/offsets.h \ + ia64/regs.h \ + ia64/ucontext_i.h \ + ia64/unwind_decoder.h \ + ia64/unwind_i.h +libunwind_la_SOURCES_ia64_common = \ + $(libunwind_la_SOURCES_common) \ + ia64/regname.c +libunwind_la_EXTRAS_ia64 = \ + ia64/mk_cursor_i \ + ia64/mk_Gcursor_i.c \ + ia64/mk_Lcursor_i.c -# The list of files that go info libunwind and libunwind-riscv: -noinst_HEADERS += riscv/init.h riscv/offsets.h riscv/unwind_i.h riscv/asm.h -libunwind_la_SOURCES_riscv_common = $(libunwind_la_SOURCES_common) \ - riscv/is_fpreg.c riscv/regname.c - -# The list of files that go into libunwind: -libunwind_la_SOURCES_riscv = $(libunwind_la_SOURCES_riscv_common) \ - $(libunwind_la_SOURCES_local) \ - riscv/getcontext.S riscv/setcontext.S \ - riscv/Lapply_reg_state.c riscv/Lreg_states_iterate.c \ - riscv/Lcreate_addr_space.c riscv/Lget_proc_info.c riscv/Lget_save_loc.c \ - riscv/Lglobal.c riscv/Linit.c riscv/Linit_local.c riscv/Linit_remote.c \ - riscv/Lis_signal_frame.c riscv/Lregs.c riscv/Lresume.c riscv/Lstep.c - -libunwind_riscv_la_SOURCES_riscv = $(libunwind_la_SOURCES_riscv_common) \ - $(libunwind_la_SOURCES_generic) \ - riscv/Gapply_reg_state.c riscv/Greg_states_iterate.c \ - riscv/Gcreate_addr_space.c riscv/Gget_proc_info.c riscv/Gget_save_loc.c \ - riscv/Gglobal.c riscv/Ginit.c riscv/Ginit_local.c riscv/Ginit_remote.c \ - riscv/Gis_signal_frame.c riscv/Gregs.c riscv/Gresume.c riscv/Gstep.c +if ARCH_IA64 +BUILT_SOURCES = Gcursor_i.h Lcursor_i.h +mk_Gcursor_i.s: $(srcdir)/ia64/mk_Gcursor_i.c + $(COMPILE) -S "$(srcdir)/ia64/mk_Gcursor_i.c" -o mk_Gcursor_i.s +mk_Lcursor_i.s: $(srcdir)/ia64/mk_Lcursor_i.c + $(COMPILE) -S "$(srcdir)/ia64/mk_Lcursor_i.c" -o mk_Lcursor_i.s +Gcursor_i.h: mk_Gcursor_i.s + "$(srcdir)/ia64/mk_cursor_i" mk_Gcursor_i.s > Gcursor_i.h +Lcursor_i.h: mk_Lcursor_i.s + "$(srcdir)/ia64/mk_cursor_i" mk_Lcursor_i.s > Lcursor_i.h -# The list of files that go info libunwind and libunwind-loongarch64: -noinst_HEADERS += loongarch64/init.h loongarch64/offsets.h loongarch64/unwind_i.h -libunwind_la_SOURCES_loongarch64_common = $(libunwind_la_SOURCES_common) \ - loongarch64/is_fpreg.c loongarch64/regname.c - -# The list of files that go into libunwind: -libunwind_la_SOURCES_loongarch64 = $(libunwind_la_SOURCES_loongarch64_common) \ - $(libunwind_la_SOURCES_local) \ - loongarch64/getcontext.S \ - loongarch64/Lapply_reg_state.c loongarch64/Lreg_states_iterate.c \ - loongarch64/Lcreate_addr_space.c loongarch64/Lget_proc_info.c \ - loongarch64/Lget_save_loc.c loongarch64/Lglobal.c loongarch64/Linit.c \ - loongarch64/Linit_local.c loongarch64/Linit_remote.c \ - loongarch64/Lis_signal_frame.c loongarch64/Lregs.c \ - loongarch64/Lresume.c loongarch64/Lstep.c - -libunwind_loongarch64_la_SOURCES_loongarch64 = $(libunwind_la_SOURCES_loongarch64_common) \ - $(libunwind_la_SOURCES_generic) \ - loongarch64/Gapply_reg_state.c loongarch64/Greg_states_iterate.c \ - loongarch64/Gcreate_addr_space.c loongarch64/Gget_proc_info.c \ - loongarch64/Gget_save_loc.c loongarch64/Gglobal.c loongarch64/Ginit.c \ - loongarch64/Ginit_local.c loongarch64/Ginit_remote.c \ - loongarch64/Gis_signal_frame.c loongarch64/Gregs.c \ - loongarch64/Gresume.c loongarch64/Gstep.c +# The list of files that go into libunwind: +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_ia64_common) \ + $(libunwind_la_SOURCES_local) \ + ia64/dyn_info_list.S \ + ia64/getcontext.S \ + ia64/Lapply_reg_state.c \ + ia64/Lcreate_addr_space.c \ + ia64/Lfind_unwind_table.c \ + ia64/Lget_proc_info.c \ + ia64/Lget_save_loc.c \ + ia64/Lglobal.c \ + ia64/Linit.c \ + ia64/Linit_local.c \ + ia64/Linit_remote.c \ + ia64/Linstall_cursor.S \ + ia64/Lis_signal_frame.c \ + ia64/Lparser.c \ + ia64/Lrbs.c \ + ia64/Lregs.c \ + ia64/Lreg_states_iterate.c \ + ia64/Lresume.c \ + ia64/Lscript.c \ + ia64/Lstep.c \ + ia64/Ltables.c + +libunwind_setjmp_la_SOURCES += \ + ia64/longjmp.S \ + ia64/setjmp.S \ + ia64/siglongjmp.S \ + ia64/sigsetjmp.S +endif # ARCH_IA64 -# The list of files that go both into libunwind and libunwind-x86: -noinst_HEADERS += x86/init.h x86/offsets.h x86/unwind_i.h -libunwind_la_SOURCES_x86_common = $(libunwind_la_SOURCES_common) \ - x86/is_fpreg.c x86/regname.c +# The list of files that go into libunwind-ia64: +libunwind_ia64_la_SOURCES = \ + $(libunwind_la_SOURCES_ia64_common) \ + $(libunwind_la_SOURCES_generic) \ + ia64/Gapply_reg_state.c \ + ia64/Gcreate_addr_space.c \ + ia64/Gfind_unwind_table.c \ + ia64/Gget_proc_info.c \ + ia64/Gget_save_loc.c \ + ia64/Gglobal.c \ + ia64/Ginit.c \ + ia64/Ginit_local.c \ + ia64/Ginit_remote.c \ + ia64/Ginstall_cursor.S \ + ia64/Gis_signal_frame.c \ + ia64/Gparser.c \ + ia64/Grbs.c \ + ia64/Gregs.c \ + ia64/Greg_states_iterate.c \ + ia64/Gresume.c \ + ia64/Gscript.c \ + ia64/Gstep.c \ + ia64/Gtables.c +libunwind_ia64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_ia64_la_LIBADD = \ + libunwind-elf64.la \ + $(libunwind_libadd) + +### target LoongArch64: +# The list of files that go info libunwind and libunwind-loongarch64: +noinst_HEADERS += \ + loongarch64/init.h \ + loongarch64/offsets.h \ + loongarch64/unwind_i.h +libunwind_la_SOURCES_loongarch64_common = \ + $(libunwind_la_SOURCES_common) \ + loongarch64/is_fpreg.c \ + loongarch64/regname.c +if ARCH_LOONGARCH64 # The list of files that go into libunwind: -libunwind_la_SOURCES_x86 = $(libunwind_la_SOURCES_x86_common) \ - $(libunwind_la_SOURCES_x86_os_local) \ - $(libunwind_la_SOURCES_local) \ - x86/Lapply_reg_state.c x86/Lreg_states_iterate.c \ - x86/Lcreate_addr_space.c x86/Lget_save_loc.c x86/Lglobal.c \ - x86/Linit.c x86/Linit_local.c x86/Linit_remote.c \ - x86/Lget_proc_info.c x86/Lregs.c \ - x86/Lresume.c x86/Lstep.c +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_loongarch64_common) \ + $(libunwind_la_SOURCES_local) \ + loongarch64/getcontext.S \ + loongarch64/Lapply_reg_state.c \ + loongarch64/Lcreate_addr_space.c \ + loongarch64/Lget_proc_info.c \ + loongarch64/Lget_save_loc.c \ + loongarch64/Lglobal.c \ + loongarch64/Linit.c \ + loongarch64/Linit_local.c \ + loongarch64/Linit_remote.c \ + loongarch64/Lis_signal_frame.c \ + loongarch64/Lregs.c \ + loongarch64/Lreg_states_iterate.c \ + loongarch64/Lresume.c \ + loongarch64/Lstep.c -# The list of files that go into libunwind-x86: -libunwind_x86_la_SOURCES_x86 = $(libunwind_la_SOURCES_x86_common) \ - $(libunwind_la_SOURCES_x86_os) \ - $(libunwind_la_SOURCES_generic) \ - x86/Gapply_reg_state.c x86/Greg_states_iterate.c \ - x86/Gcreate_addr_space.c x86/Gget_save_loc.c x86/Gglobal.c \ - x86/Ginit.c x86/Ginit_local.c x86/Ginit_remote.c \ - x86/Gget_proc_info.c x86/Gregs.c \ - x86/Gresume.c x86/Gstep.c +libunwind_setjmp_la_SOURCES += \ + loongarch64/siglongjmp.S +endif # ARCH_LOONGARCH64 -# The list of files that go both into libunwind and libunwind-x86_64: -noinst_HEADERS += x86_64/offsets.h \ - x86_64/init.h x86_64/unwind_i.h x86_64/ucontext_i.h -libunwind_la_SOURCES_x86_64_common = $(libunwind_la_SOURCES_common) \ - x86_64/is_fpreg.c x86_64/regname.c +libunwind_loongarch64_la_SOURCES = \ + $(libunwind_la_SOURCES_loongarch64_common) \ + $(libunwind_la_SOURCES_generic) \ + loongarch64/Gapply_reg_state.c \ + loongarch64/Gcreate_addr_space.c \ + loongarch64/Gget_proc_info.c \ + loongarch64/Gget_save_loc.c \ + loongarch64/Gglobal.c \ + loongarch64/Ginit.c \ + loongarch64/Ginit_local.c \ + loongarch64/Ginit_remote.c \ + loongarch64/Gis_signal_frame.c \ + loongarch64/Gregs.c \ + loongarch64/Greg_states_iterate.c \ + loongarch64/Gresume.c \ + loongarch64/Gstep.c +libunwind_loongarch64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_loongarch64_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) + +### target MIPS: +# The list of files that go info libunwind and libunwind-mips: +noinst_HEADERS += \ + mips/init.h \ + mips/offsets.h \ + mips/unwind_i.h +libunwind_la_SOURCES_mips_common = \ + $(libunwind_la_SOURCES_common) \ + mips/is_fpreg.c \ + mips/regname.c +if ARCH_MIPS # The list of files that go into libunwind: -libunwind_la_SOURCES_x86_64 = $(libunwind_la_SOURCES_x86_64_common) \ - $(libunwind_la_SOURCES_x86_64_os_local) \ - $(libunwind_la_SOURCES_local) \ - x86_64/setcontext.S \ - x86_64/Lapply_reg_state.c x86_64/Lreg_states_iterate.c \ - x86_64/Lcreate_addr_space.c x86_64/Lget_save_loc.c x86_64/Lglobal.c \ - x86_64/Linit.c x86_64/Linit_local.c x86_64/Linit_remote.c \ - x86_64/Lget_proc_info.c x86_64/Lregs.c x86_64/Lresume.c \ - x86_64/Lstash_frame.c x86_64/Lstep.c x86_64/Ltrace.c x86_64/getcontext.S +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_mips_common) \ + $(libunwind_la_SOURCES_local) \ + mips/getcontext.S \ + mips/Lapply_reg_state.c \ + mips/Lcreate_addr_space.c \ + mips/Lget_proc_info.c \ + mips/Lget_save_loc.c \ + mips/Lglobal.c \ + mips/Linit.c \ + mips/Linit_local.c \ + mips/Linit_remote.c \ + mips/Lis_signal_frame.c \ + mips/Lregs.c \ + mips/Lreg_states_iterate.c \ + mips/Lresume.c \ + mips/Lstep.c -# The list of files that go into libunwind-x86_64: -libunwind_x86_64_la_SOURCES_x86_64 = $(libunwind_la_SOURCES_x86_64_common) \ - $(libunwind_la_SOURCES_x86_64_os) \ - $(libunwind_la_SOURCES_generic) \ - x86_64/Gapply_reg_state.c x86_64/Greg_states_iterate.c \ - x86_64/Gcreate_addr_space.c x86_64/Gget_save_loc.c x86_64/Gglobal.c \ - x86_64/Ginit.c x86_64/Ginit_local.c x86_64/Ginit_remote.c \ - x86_64/Gget_proc_info.c x86_64/Gregs.c x86_64/Gresume.c \ - x86_64/Gstash_frame.c x86_64/Gstep.c x86_64/Gtrace.c +libunwind_setjmp_la_SOURCES += mips/siglongjmp.S +endif # ARCH_MIPS +libunwind_mips_la_SOURCES = \ + $(libunwind_la_SOURCES_mips_common) \ + $(libunwind_la_SOURCES_generic) \ + mips/Gapply_reg_state.c \ + mips/Gcreate_addr_space.c \ + mips/Gget_proc_info.c \ + mips/Gget_save_loc.c \ + mips/Gglobal.c \ + mips/Ginit.c \ + mips/Ginit_local.c \ + mips/Ginit_remote.c \ + mips/Gis_signal_frame.c \ + mips/Gregs.c \ + mips/Greg_states_iterate.c \ + mips/Gresume.c \ + mips/Gstep.c +libunwind_mips_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_mips_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elfxx.la \ + $(libunwind_libadd) + +### target PowerPC: # The list of local files that go to Power 64 and 32: -libunwind_la_SOURCES_ppc = \ - ppc/Lget_proc_info.c ppc/Lget_save_loc.c ppc/Linit_local.c \ - ppc/Linit_remote.c ppc/Lis_signal_frame.c +libunwind_la_SOURCES_ppc = \ + ppc/Lget_proc_info.c \ + ppc/Lget_save_loc.c \ + ppc/Linit_local.c \ + ppc/Linit_remote.c \ + ppc/Lis_signal_frame.c # The list of generic files that go to Power 64 and 32: -libunwind_ppc_la_SOURCES_ppc_generic = \ - ppc/Gget_proc_info.c ppc/Gget_save_loc.c ppc/Ginit_local.c \ - ppc/Ginit_remote.c ppc/Gis_signal_frame.c +libunwind_ppc_la_SOURCES_ppc_generic = \ + ppc/Gget_proc_info.c \ + ppc/Gget_save_loc.c \ + ppc/Ginit_local.c \ + ppc/Ginit_remote.c \ + ppc/Gis_signal_frame.c + # The list of files that go both into libunwind and libunwind-ppc32: -noinst_HEADERS += ppc32/init.h ppc32/unwind_i.h ppc32/ucontext_i.h -libunwind_la_SOURCES_ppc32_common = $(libunwind_la_SOURCES_common) \ - ppc32/is_fpreg.c ppc32/regname.c ppc32/get_func_addr.c +noinst_HEADERS += \ + ppc32/init.h \ + ppc32/unwind_i.h \ + ppc32/ucontext_i.h +libunwind_la_SOURCES_ppc32_common = \ + $(libunwind_la_SOURCES_common) \ + ppc32/get_func_addr.c \ + ppc32/is_fpreg.c \ + ppc32/regname.c +if ARCH_PPC32 # The list of files that go into libunwind: -libunwind_la_SOURCES_ppc32 = $(libunwind_la_SOURCES_ppc32_common) \ - $(libunwind_la_SOURCES_local) \ - $(libunwind_la_SOURCES_ppc) \ - ppc32/Lapply_reg_state.c ppc32/Lreg_states_iterate.c \ - ppc32/Lcreate_addr_space.c \ - ppc32/Lglobal.c ppc32/Linit.c \ - ppc32/Lregs.c ppc32/Lresume.c ppc32/Lstep.c +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_ppc32_common) \ + $(libunwind_la_SOURCES_local) \ + $(libunwind_la_SOURCES_ppc) \ + ppc32/Lapply_reg_state.c \ + ppc32/Lcreate_addr_space.c \ + ppc32/Lglobal.c \ + ppc32/Linit.c \ + ppc32/Lregs.c \ + ppc32/Lreg_states_iterate.c \ + ppc32/Lresume.c \ + ppc32/Lstep.c + +libunwind_setjmp_la_SOURCES += \ + ppc/longjmp.S \ + ppc/siglongjmp.S +endif # ARCH_PPC32 # The list of files that go into libunwind-ppc32: -libunwind_ppc32_la_SOURCES_ppc32 = $(libunwind_la_SOURCES_ppc32_common) \ - $(libunwind_la_SOURCES_generic) \ - $(libunwind_ppc_la_SOURCES_ppc_generic) \ - ppc32/Gapply_reg_state.c ppc32/Greg_states_iterate.c \ - ppc32/Gcreate_addr_space.c \ - ppc32/Gglobal.c ppc32/Ginit.c \ - ppc32/Gregs.c ppc32/Gresume.c ppc32/Gstep.c +libunwind_ppc32_la_SOURCES = \ + $(libunwind_la_SOURCES_ppc32_common) \ + $(libunwind_la_SOURCES_generic) \ + $(libunwind_ppc_la_SOURCES_ppc_generic)\ + ppc32/Gapply_reg_state.c \ + ppc32/Gcreate_addr_space.c \ + ppc32/Gglobal.c \ + ppc32/Ginit.c \ + ppc32/Gregs.c \ + ppc32/Greg_states_iterate.c \ + ppc32/Gresume.c \ + ppc32/Gstep.c +libunwind_ppc32_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_ppc32_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) # The list of files that go both into libunwind and libunwind-ppc64: -noinst_HEADERS += ppc64/init.h ppc64/unwind_i.h ppc64/ucontext_i.h -libunwind_la_SOURCES_ppc64_common = $(libunwind_la_SOURCES_common) \ - ppc64/is_fpreg.c ppc64/regname.c ppc64/get_func_addr.c +noinst_HEADERS += \ + ppc64/init.h \ + ppc64/unwind_i.h \ + ppc64/ucontext_i.h +libunwind_la_SOURCES_ppc64_common = \ + $(libunwind_la_SOURCES_common) \ + ppc64/get_func_addr.c \ + ppc64/is_fpreg.c \ + ppc64/regname.c +if ARCH_PPC64 # The list of files that go into libunwind: -libunwind_la_SOURCES_ppc64 = $(libunwind_la_SOURCES_ppc64_common) \ - $(libunwind_la_SOURCES_local) \ - $(libunwind_la_SOURCES_ppc) \ - ppc64/Lapply_reg_state.c ppc64/Lreg_states_iterate.c \ - ppc64/Lcreate_addr_space.c \ - ppc64/Lglobal.c ppc64/Linit.c \ - ppc64/Lregs.c ppc64/Lresume.c ppc64/Lstep.c +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_ppc64_common) \ + $(libunwind_la_SOURCES_local) \ + $(libunwind_la_SOURCES_ppc) \ + ppc64/Lapply_reg_state.c \ + ppc64/Lcreate_addr_space.c \ + ppc64/Lglobal.c \ + ppc64/Linit.c \ + ppc64/Lregs.c \ + ppc64/Lreg_states_iterate.c \ + ppc64/Lresume.c \ + ppc64/Lstep.c +libunwind_setjmp_la_SOURCES += \ + ppc/longjmp.S \ + ppc/siglongjmp.S +endif # ARCH_PPC64 # The list of files that go into libunwind-ppc64: -libunwind_ppc64_la_SOURCES_ppc64 = $(libunwind_la_SOURCES_ppc64_common) \ - $(libunwind_la_SOURCES_generic) \ - $(libunwind_ppc_la_SOURCES_ppc_generic) \ - ppc64/Gapply_reg_state.c ppc64/Greg_states_iterate.c \ - ppc64/Gcreate_addr_space.c \ - ppc64/Gglobal.c ppc64/Ginit.c \ - ppc64/Gregs.c ppc64/Gresume.c ppc64/Gstep.c +libunwind_ppc64_la_SOURCES = \ + $(libunwind_la_SOURCES_ppc64_common) \ + $(libunwind_la_SOURCES_generic) \ + $(libunwind_ppc_la_SOURCES_ppc_generic)\ + ppc64/Gapply_reg_state.c \ + ppc64/Gcreate_addr_space.c \ + ppc64/Gglobal.c \ + ppc64/Ginit.c \ + ppc64/Gregs.c \ + ppc64/Greg_states_iterate.c \ + ppc64/Gresume.c \ + ppc64/Gstep.c +libunwind_ppc64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_ppc64_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) -# The list of files that go into libunwind and libunwind-sh: -noinst_HEADERS += sh/init.h sh/offsets.h sh/unwind_i.h -libunwind_la_SOURCES_sh_common = $(libunwind_la_SOURCES_common) \ - sh/is_fpreg.c sh/regname.c - -# The list of files that go into libunwind: -libunwind_la_SOURCES_sh = $(libunwind_la_SOURCES_sh_common) \ - $(libunwind_la_SOURCES_local) \ - sh/Lapply_reg_state.c sh/Lreg_states_iterate.c \ - sh/Lcreate_addr_space.c sh/Lget_proc_info.c sh/Lget_save_loc.c \ - sh/Lglobal.c sh/Linit.c sh/Linit_local.c sh/Linit_remote.c \ - sh/Lis_signal_frame.c sh/Lregs.c sh/Lresume.c sh/Lstep.c - -libunwind_sh_la_SOURCES_sh = $(libunwind_la_SOURCES_sh_common) \ - $(libunwind_la_SOURCES_generic) \ - sh/Gapply_reg_state.c sh/Greg_states_iterate.c \ - sh/Gcreate_addr_space.c sh/Gget_proc_info.c sh/Gget_save_loc.c \ - sh/Gglobal.c sh/Ginit.c sh/Ginit_local.c sh/Ginit_remote.c \ - sh/Gis_signal_frame.c sh/Gregs.c sh/Gresume.c sh/Gstep.c +### target RISC-V: +# The list of files that go info libunwind and libunwind-riscv: +noinst_HEADERS += \ + riscv/asm.h \ + riscv/init.h \ + riscv/offsets.h \ + riscv/unwind_i.h +libunwind_la_SOURCES_riscv_common = \ + $(libunwind_la_SOURCES_common) \ + riscv/is_fpreg.c \ + riscv/regname.c +if ARCH_RISCV +# The list of files that go into libunwind: +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_riscv_common) \ + $(libunwind_la_SOURCES_local) \ + riscv/getcontext.S \ + riscv/Lapply_reg_state.c \ + riscv/Lcreate_addr_space.c \ + riscv/Lget_proc_info.c \ + riscv/Lget_save_loc.c \ + riscv/Lglobal.c \ + riscv/Linit.c \ + riscv/Linit_local.c \ + riscv/Linit_remote.c \ + riscv/Lis_signal_frame.c \ + riscv/Lregs.c \ + riscv/Lreg_states_iterate.c \ + riscv/Lresume.c \ + riscv/Lstep.c \ + riscv/setcontext.S + +libunwind_setjmp_la_SOURCES += \ + riscv/siglongjmp.S +endif # ARCH_RISCV + +libunwind_riscv_la_SOURCES = \ + $(libunwind_la_SOURCES_riscv_common) \ + $(libunwind_la_SOURCES_generic) \ + riscv/Gapply_reg_state.c \ + riscv/Gcreate_addr_space.c \ + riscv/Gget_proc_info.c \ + riscv/Gget_save_loc.c \ + riscv/Gglobal.c \ + riscv/Ginit.c \ + riscv/Ginit_local.c \ + riscv/Ginit_remote.c \ + riscv/Gis_signal_frame.c \ + riscv/Gregs.c \ + riscv/Greg_states_iterate.c \ + riscv/Gresume.c \ + riscv/Gstep.c + +libunwind_riscv_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_riscv_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) + +### target s390x: # The list of files that go both into libunwind and libunwind-s390x: -noinst_HEADERS += s390x/init.h s390x/unwind_i.h -libunwind_la_SOURCES_s390x_common = $(libunwind_la_SOURCES_common) \ - s390x/is_fpreg.c s390x/regname.c +noinst_HEADERS += \ + s390x/init.h \ + s390x/unwind_i.h +libunwind_la_SOURCES_s390x_common = \ + $(libunwind_la_SOURCES_common) \ + s390x/is_fpreg.c \ + s390x/regname.c +if ARCH_S390X # The list of files that go into libunwind: -libunwind_la_SOURCES_s390x = $(libunwind_la_SOURCES_s390x_common) \ - $(libunwind_la_SOURCES_local) \ - s390x/Lapply_reg_state.c s390x/Lreg_states_iterate.c \ - s390x/Lcreate_addr_space.c s390x/Lget_save_loc.c s390x/Lglobal.c \ - s390x/Linit.c s390x/Linit_local.c s390x/Linit_remote.c \ - s390x/Lget_proc_info.c s390x/Lregs.c s390x/Lresume.c \ - s390x/Lis_signal_frame.c s390x/Lstep.c \ - s390x/getcontext.S s390x/setcontext.S +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_s390x_common) \ + $(libunwind_la_SOURCES_local) \ + s390x/getcontext.S \ + s390x/Lapply_reg_state.c \ + s390x/Lcreate_addr_space.c \ + s390x/Lget_proc_info.c \ + s390x/Lget_save_loc.c \ + s390x/Lglobal.c \ + s390x/Linit.c \ + s390x/Linit_local.c \ + s390x/Linit_remote.c \ + s390x/Lis_signal_frame.c \ + s390x/Lregs.c \ + s390x/Lreg_states_iterate.c \ + s390x/Lresume.c \ + s390x/Lstep.c \ + s390x/setcontext.S +endif # ARCH_S390X # The list of files that go into libunwind-s390x: -libunwind_s390x_la_SOURCES_s390x = $(libunwind_la_SOURCES_s390x_common) \ - $(libunwind_la_SOURCES_generic) \ - s390x/Gapply_reg_state.c s390x/Greg_states_iterate.c \ - s390x/Gcreate_addr_space.c s390x/Gget_save_loc.c s390x/Gglobal.c \ - s390x/Ginit.c s390x/Ginit_local.c s390x/Ginit_remote.c \ - s390x/Gget_proc_info.c s390x/Gregs.c s390x/Gresume.c \ - s390x/Gis_signal_frame.c s390x/Gstep.c +libunwind_s390x_la_SOURCES = \ + $(libunwind_la_SOURCES_s390x_common) \ + $(libunwind_la_SOURCES_generic) \ + s390x/Gapply_reg_state.c \ + s390x/Gcreate_addr_space.c \ + s390x/Gget_proc_info.c \ + s390x/Gget_save_loc.c \ + s390x/Gglobal.c \ + s390x/Ginit.c \ + s390x/Ginit_local.c \ + s390x/Ginit_remote.c \ + s390x/Gis_signal_frame.c \ + s390x/Gregs.c \ + s390x/Greg_states_iterate.c \ + s390x/Gresume.c \ + s390x/Gstep.c +libunwind_s390x_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_s390x_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) + +### target Sh: +# The list of files that go into libunwind and libunwind-sh: +noinst_HEADERS += \ + sh/init.h \ + sh/offsets.h \ + sh/unwind_i.h +libunwind_la_SOURCES_sh_common = \ + $(libunwind_la_SOURCES_common) \ + sh/is_fpreg.c \ + sh/regname.c + +if ARCH_SH +# The list of files that go into libunwind: +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_sh_common) \ + $(libunwind_la_SOURCES_local) \ + sh/Lapply_reg_state.c \ + sh/Lcreate_addr_space.c \ + sh/Lget_proc_info.c \ + sh/Lget_save_loc.c \ + sh/Lglobal.c \ + sh/Linit.c \ + sh/Linit_local.c \ + sh/Linit_remote.c \ + sh/Lis_signal_frame.c \ + sh/Lregs.c \ + sh/Lreg_states_iterate.c \ + sh/Lresume.c \ + sh/Lstep.c +libunwind_setjmp_la_SOURCES += sh/siglongjmp.S +endif # ARCH_SH + +libunwind_sh_la_SOURCES = \ + $(libunwind_la_SOURCES_sh_common) \ + $(libunwind_la_SOURCES_generic) \ + sh/Gapply_reg_state.c \ + sh/Gcreate_addr_space.c \ + sh/Gget_proc_info.c \ + sh/Gget_save_loc.c \ + sh/Gglobal.c \ + sh/Ginit.c \ + sh/Ginit_local.c \ + sh/Ginit_remote.c \ + sh/Gis_signal_frame.c \ + sh/Gregs.c \ + sh/Greg_states_iterate.c \ + sh/Gresume.c \ + sh/Gstep.c +libunwind_sh_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_sh_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) + +### target x86: +# The list of files that go both into libunwind and libunwind-x86: +noinst_HEADERS += \ + x86/init.h \ + x86/offsets.h \ + x86/unwind_i.h +libunwind_la_SOURCES_x86_common = \ + $(libunwind_la_SOURCES_common) \ + x86/is_fpreg.c \ + x86/regname.c + +if ARCH_X86 +# The list of files that go into libunwind: +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_x86_common) \ + $(libunwind_la_SOURCES_x86_os_local) \ + $(libunwind_la_SOURCES_local) \ + x86/Lapply_reg_state.c \ + x86/Lcreate_addr_space.c \ + x86/Lget_proc_info.c \ + x86/Lget_save_loc.c \ + x86/Lglobal.c \ + x86/Linit.c \ + x86/Linit_local.c \ + x86/Linit_remote.c \ + x86/Lregs.c \ + x86/Lreg_states_iterate.c \ + x86/Lresume.c \ + x86/Lstep.c + +libunwind_setjmp_la_SOURCES += \ + x86/longjmp.S \ + x86/siglongjmp.S +endif # ARCH_X86 + +# The list of files that go into libunwind-x86: +libunwind_x86_la_SOURCES = \ + $(libunwind_la_SOURCES_x86_common) \ + $(libunwind_la_SOURCES_x86_os) \ + $(libunwind_la_SOURCES_generic) \ + x86/Gapply_reg_state.c \ + x86/Gcreate_addr_space.c \ + x86/Gget_proc_info.c \ + x86/Gget_save_loc.c \ + x86/Gglobal.c \ + x86/Ginit.c \ + x86/Ginit_local.c \ + x86/Ginit_remote.c \ + x86/Gregs.c \ + x86/Greg_states_iterate.c \ + x86/Gresume.c \ + x86/Gstep.c +libunwind_x86_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_x86_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) + +### target x86_64: +# The list of files that go both into libunwind and libunwind-x86_64: +noinst_HEADERS += \ + x86_64/init.h \ + x86_64/ucontext_i.h \ + x86_64/unwind_i.h +libunwind_la_SOURCES_x86_64_common = \ + $(libunwind_la_SOURCES_common) \ + x86_64/is_fpreg.c \ + x86_64/regname.c + +if ARCH_X86_64 +# The list of files that go into libunwind: +libunwind_la_SOURCES = \ + $(libunwind_la_SOURCES_x86_64_common) \ + $(libunwind_la_SOURCES_x86_64_os_local)\ + $(libunwind_la_SOURCES_local) \ + x86_64/getcontext.S \ + x86_64/Lapply_reg_state.c \ + x86_64/Lcreate_addr_space.c \ + x86_64/Lget_proc_info.c \ + x86_64/Lget_save_loc.c \ + x86_64/Lglobal.c \ + x86_64/Linit.c \ + x86_64/Linit_local.c \ + x86_64/Linit_remote.c \ + x86_64/Lregs.c \ + x86_64/Lreg_states_iterate.c \ + x86_64/Lresume.c \ + x86_64/Lstash_frame.c \ + x86_64/Lstep.c \ + x86_64/Ltrace.c \ + x86_64/setcontext.S + +libunwind_setjmp_la_SOURCES += \ + x86_64/longjmp.S \ + x86_64/siglongjmp.S +endif # ARCH_X86_64 + +# The list of files that go into libunwind-x86_64: +libunwind_x86_64_la_SOURCES = \ + $(libunwind_la_SOURCES_x86_64_common) \ + $(libunwind_la_SOURCES_x86_64_os) \ + $(libunwind_la_SOURCES_generic) \ + x86_64/Gapply_reg_state.c \ + x86_64/Gcreate_addr_space.c \ + x86_64/Gget_proc_info.c \ + x86_64/Gget_save_loc.c \ + x86_64/Gglobal.c \ + x86_64/Ginit.c \ + x86_64/Ginit_local.c \ + x86_64/Ginit_remote.c \ + x86_64/Gregs.c \ + x86_64/Greg_states_iterate.c \ + x86_64/Gresume.c \ + x86_64/Gstash_frame.c \ + x86_64/Gstep.c \ + x86_64/Gtrace.c +libunwind_x86_64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) +libunwind_x86_64_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) if REMOTE_ONLY install-exec-hook: @@ -614,233 +1235,6 @@ fi endif -if OS_LINUX - libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_linux) - libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_linux_local) - libunwind_la_SOURCES_x86_os = x86/Gos-linux.c - libunwind_x86_la_SOURCES_os = x86/getcontext-linux.S - libunwind_la_SOURCES_x86_os_local = x86/Los-linux.c - libunwind_la_SOURCES_x86_64_os = x86_64/Gos-linux.c - libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-linux.c - libunwind_la_SOURCES_arm_os = arm/Gos-linux.c - libunwind_la_SOURCES_arm_os_local = arm/Los-linux.c - libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_linux.c - libunwind_coredump_la_SOURCES += coredump/_UCD_get_threadinfo_prstatus.c - libunwind_coredump_la_SOURCES += coredump/_UCD_get_mapinfo_linux.c -endif - -if OS_HPUX - libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_hpux) - libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_hpux_local) -endif - -if OS_FREEBSD - libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_freebsd) - libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_freebsd_local) - libunwind_la_SOURCES_x86_os = x86/Gos-freebsd.c - libunwind_x86_la_SOURCES_os = x86/getcontext-freebsd.S - libunwind_la_SOURCES_x86_os_local = x86/Los-freebsd.c - libunwind_la_SOURCES_x86_64_os = x86_64/Gos-freebsd.c - libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-freebsd.c - libunwind_la_SOURCES_arm_os = arm/Gos-freebsd.c - libunwind_la_SOURCES_arm_os_local = arm/Los-freebsd.c - libunwind_coredump_la_SOURCES += coredump/_UCD_access_reg_freebsd.c - libunwind_coredump_la_SOURCES += coredump/_UCD_get_threadinfo_prstatus.c - libunwind_coredump_la_SOURCES += coredump/_UCD_get_mapinfo_generic.c -endif - -if OS_SOLARIS - libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_solaris) - libunwind_la_SOURCES_x86_64_os = x86_64/Gos-solaris.c - libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-solaris.c -endif - -if OS_QNX - libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_qnx) - libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_qnx_local) - libunwind_la_SOURCES_arm_os = arm/Gos-other.c - libunwind_la_SOURCES_arm_os_local = arm/Los-other.c -endif - -if ARCH_AARCH64 - libunwind_la_SOURCES = $(libunwind_la_SOURCES_aarch64) - libunwind_aarch64_la_SOURCES = $(libunwind_aarch64_la_SOURCES_aarch64) - libunwind_aarch64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_aarch64_la_LIBADD = libunwind-dwarf-generic.la - libunwind_aarch64_la_LIBADD += libunwind-elf64.la -if !REMOTE_ONLY - libunwind_aarch64_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += aarch64/siglongjmp.S -else -if ARCH_ARM - libunwind_la_SOURCES = $(libunwind_la_SOURCES_arm) - libunwind_arm_la_SOURCES = $(libunwind_arm_la_SOURCES_arm) - libunwind_arm_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_arm_la_LIBADD = libunwind-dwarf-generic.la - libunwind_arm_la_LIBADD += libunwind-elf32.la -if !REMOTE_ONLY - libunwind_arm_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += arm/siglongjmp.S -else -if ARCH_IA64 - BUILT_SOURCES = Gcursor_i.h Lcursor_i.h -mk_Gcursor_i.s: $(srcdir)/ia64/mk_Gcursor_i.c - $(COMPILE) -S "$(srcdir)/ia64/mk_Gcursor_i.c" -o mk_Gcursor_i.s -mk_Lcursor_i.s: $(srcdir)/ia64/mk_Lcursor_i.c - $(COMPILE) -S "$(srcdir)/ia64/mk_Lcursor_i.c" -o mk_Lcursor_i.s -Gcursor_i.h: mk_Gcursor_i.s - "$(srcdir)/ia64/mk_cursor_i" mk_Gcursor_i.s > Gcursor_i.h -Lcursor_i.h: mk_Lcursor_i.s - "$(srcdir)/ia64/mk_cursor_i" mk_Lcursor_i.s > Lcursor_i.h - - libunwind_la_SOURCES = $(libunwind_la_SOURCES_ia64) - libunwind_ia64_la_SOURCES = $(libunwind_ia64_la_SOURCES_ia64) - libunwind_ia64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_ia64_la_LIBADD = libunwind-elf64.la -if !REMOTE_ONLY - libunwind_ia64_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += ia64/setjmp.S ia64/sigsetjmp.S \ - ia64/longjmp.S ia64/siglongjmp.S -else -if ARCH_HPPA - libunwind_la_SOURCES = $(libunwind_la_SOURCES_hppa) - libunwind_hppa_la_SOURCES = $(libunwind_hppa_la_SOURCES_hppa) - libunwind_hppa_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_hppa_la_LIBADD = libunwind-dwarf-generic.la - libunwind_hppa_la_LIBADD += libunwind-elf32.la -if !REMOTE_ONLY - libunwind_hppa_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += hppa/siglongjmp.S -else -if ARCH_MIPS - libunwind_la_SOURCES = $(libunwind_la_SOURCES_mips) - libunwind_mips_la_SOURCES = $(libunwind_mips_la_SOURCES_mips) - libunwind_mips_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_mips_la_LIBADD = libunwind-dwarf-generic.la - libunwind_mips_la_LIBADD += libunwind-elfxx.la -if !REMOTE_ONLY - libunwind_mips_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += mips/siglongjmp.S -else -if ARCH_TILEGX - libunwind_la_SOURCES = $(libunwind_la_SOURCES_tilegx) - libunwind_tilegx_la_SOURCES = $(libunwind_tilegx_la_SOURCES_tilegx) - libunwind_tilegx_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_tilegx_la_LIBADD = libunwind-dwarf-generic.la - libunwind_tilegx_la_LIBADD += libunwind-elfxx.la -if !REMOTE_ONLY - libunwind_tilegx_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += tilegx/siglongjmp.S -else -if ARCH_RISCV - libunwind_la_SOURCES = $(libunwind_la_SOURCES_riscv) - libunwind_riscv_la_SOURCES = $(libunwind_riscv_la_SOURCES_riscv) - libunwind_riscv_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_riscv_la_LIBADD = libunwind-dwarf-generic.la - libunwind_riscv_la_LIBADD += libunwind-elf64.la -if !REMOTE_ONLY - libunwind_riscv_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += riscv/siglongjmp.S -else -if ARCH_LOONGARCH64 - libunwind_la_SOURCES = $(libunwind_la_SOURCES_loongarch64) - libunwind_loongarch64_la_SOURCES = $(libunwind_loongarch64_la_SOURCES_loongarch64) - libunwind_loongarch64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_loongarch64_la_LIBADD = libunwind-dwarf-generic.la - libunwind_loongarch64_la_LIBADD += libunwind-elf64.la -if !REMOTE_ONLY - libunwind_loongarch64_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += loongarch64/siglongjmp.S -else -if ARCH_X86 - libunwind_la_SOURCES = $(libunwind_la_SOURCES_x86) $(libunwind_x86_la_SOURCES_os) - libunwind_x86_la_SOURCES = $(libunwind_x86_la_SOURCES_x86) - libunwind_x86_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_x86_la_LIBADD = libunwind-dwarf-generic.la - libunwind_x86_la_LIBADD += libunwind-elf32.la -if !REMOTE_ONLY - libunwind_x86_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += x86/longjmp.S x86/siglongjmp.S -else -if ARCH_X86_64 - libunwind_la_SOURCES = $(libunwind_la_SOURCES_x86_64) - libunwind_x86_64_la_SOURCES = $(libunwind_x86_64_la_SOURCES_x86_64) - libunwind_x86_64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_x86_64_la_LIBADD = libunwind-dwarf-generic.la - libunwind_x86_64_la_LIBADD += libunwind-elf64.la -if !REMOTE_ONLY - libunwind_x86_64_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += x86_64/longjmp.S x86_64/siglongjmp.S -else -if ARCH_PPC32 - libunwind_la_SOURCES = $(libunwind_la_SOURCES_ppc32) - libunwind_ppc32_la_SOURCES = $(libunwind_ppc32_la_SOURCES_ppc32) - libunwind_ppc32_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_ppc32_la_LIBADD = libunwind-dwarf-generic.la - libunwind_ppc32_la_LIBADD += libunwind-elf32.la -if !REMOTE_ONLY - libunwind_ppc32_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S -else -if ARCH_PPC64 - libunwind_la_SOURCES = $(libunwind_la_SOURCES_ppc64) - libunwind_ppc64_la_SOURCES = $(libunwind_ppc64_la_SOURCES_ppc64) - libunwind_ppc64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_ppc64_la_LIBADD = libunwind-dwarf-generic.la - libunwind_ppc64_la_LIBADD += libunwind-elf64.la -if !REMOTE_ONLY - libunwind_ppc64_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S -else -if ARCH_SH - libunwind_la_SOURCES = $(libunwind_la_SOURCES_sh) - libunwind_sh_la_SOURCES = $(libunwind_sh_la_SOURCES_sh) - libunwind_sh_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_sh_la_LIBADD = libunwind-dwarf-generic.la - libunwind_sh_la_LIBADD += libunwind-elf32.la -if !REMOTE_ONLY - libunwind_sh_la_LIBADD += libunwind.la -lc -endif - libunwind_setjmp_la_SOURCES += sh/siglongjmp.S -else -if ARCH_S390X - libunwind_la_SOURCES = $(libunwind_la_SOURCES_s390x) - libunwind_s390x_la_SOURCES = $(libunwind_s390x_la_SOURCES_s390x) - libunwind_s390x_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) - libunwind_s390x_la_LIBADD = libunwind-dwarf-generic.la - libunwind_s390x_la_LIBADD += libunwind-elf64.la -if !REMOTE_ONLY - libunwind_s390x_la_LIBADD += libunwind.la -lc -endif - -endif # ARCH_S390X -endif # ARCH_SH -endif # ARCH_PPC64 -endif # ARCH_PPC32 -endif # ARCH_X86_64 -endif # ARCH_X86 -endif # ARCH_LOONGARCH64 -endif # ARCH_RISCV -endif # ARCH_TILEGX -endif # ARCH_MIPS -endif # ARCH_HPPA -endif # ARCH_IA64 -endif # ARCH_ARM -endif # ARCH_AARCH64 - - # # Don't link with standard libraries, because those may mention # libunwind already. @@ -854,30 +1248,7 @@ AM_CCASFLAGS = $(AM_CPPFLAGS) noinst_HEADERS += unwind/unwind-internal.h -EXTRA_DIST = $(libunwind_la_SOURCES_aarch64) \ - $(libunwind_la_SOURCES_arm) \ - $(libunwind_la_SOURCES_hppa) \ - $(libunwind_la_SOURCES_ia64) \ - $(libunwind_la_EXTRAS_ia64) \ - $(libunwind_la_SOURCES_mips) \ - $(libunwind_la_SOURCES_sh) \ - $(libunwind_la_SOURCES_x86) \ - $(libunwind_la_SOURCES_os_freebsd) \ - $(libunwind_la_SOURCES_os_linux) \ - $(libunwind_la_SOURCES_os_hpux) \ - $(libunwind_la_SOURCES_os_qnx) \ - $(libunwind_la_SOURCES_os_solaris) \ - $(libunwind_la_SOURCES_common) \ - $(libunwind_la_SOURCES_local) \ - $(libunwind_la_SOURCES_generic) \ - $(libunwind_aarch64_la_SOURCES_aarch64) \ - $(libunwind_arm_la_SOURCES_arm) \ - $(libunwind_hppa_la_SOURCES_hppa) \ - $(libunwind_ia64_la_SOURCES_ia64) \ - $(libunwind_mips_la_SOURCES_mips) \ - $(libunwind_sh_la_SOURCES_sh) \ - $(libunwind_x86_la_SOURCES_x86) \ - $(libunwind_x86_64_la_SOURCES_x86_64) +EXTRA_DIST = $(libunwind_la_EXTRAS_ia64) MAINTAINERCLEANFILES = Makefile.in diff -Nru libunwind-1.7.2/src/Makefile.in libunwind-1.8.1/src/Makefile.in --- libunwind-1.7.2/src/Makefile.in 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/src/Makefile.in 2024-02-22 14:09:14.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,6 +14,28 @@ @SET_MAKE@ +# +# This file is a part of the libunwind project. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# This permission notice shall be included in all copies or substantial portions +# of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + VPATH = @srcdir@ @@ -103,54 +125,65 @@ @ARCH_RISCV_TRUE@am__append_10 = libunwind-riscv.la @ARCH_S390X_TRUE@am__append_11 = libunwind-s390x.la @ARCH_SH_TRUE@am__append_12 = libunwind-sh.la -@ARCH_TILEGX_TRUE@am__append_13 = libunwind-tilegx.la -@ARCH_X86_TRUE@am__append_14 = libunwind-x86.la -@ARCH_X86_64_TRUE@am__append_15 = libunwind-x86_64.la -@BUILD_COREDUMP_TRUE@am__append_16 = libunwind-coredump.la +@ARCH_X86_TRUE@am__append_13 = libunwind-x86.la +@ARCH_X86_64_TRUE@am__append_14 = libunwind-x86_64.la +@BUILD_COREDUMP_TRUE@am__append_15 = libunwind-coredump.la +@BUILD_NTO_TRUE@am__append_16 = libunwind-nto.la @BUILD_PTRACE_TRUE@am__append_17 = libunwind-ptrace.la @BUILD_SETJMP_TRUE@am__append_18 = libunwind-setjmp.la -@REMOTE_ONLY_FALSE@am__append_19 = unwind/libunwind.pc -@BUILD_PTRACE_TRUE@am__append_20 = ptrace/libunwind-ptrace.pc -@BUILD_SETJMP_TRUE@am__append_21 = setjmp/libunwind-setjmp.pc -@BUILD_COREDUMP_TRUE@am__append_22 = coredump/libunwind-coredump.pc -@USE_DWARF_TRUE@am__append_23 = libunwind-dwarf-common.la libunwind-dwarf-generic.la -@REMOTE_ONLY_FALSE@@USE_DWARF_TRUE@am__append_24 = libunwind-dwarf-local.la -@USE_DWARF_TRUE@am__append_25 = libunwind-dwarf-local.la -@OS_LINUX_TRUE@am__append_26 = coredump/_UCD_access_reg_linux.c \ +@REMOTE_ONLY_FALSE@am__append_19 = libunwind.la -lc +@REMOTE_ONLY_FALSE@am__append_20 = unwind/libunwind.pc +@BUILD_COREDUMP_TRUE@am__append_21 = coredump/libunwind-coredump.pc +@BUILD_PTRACE_TRUE@am__append_22 = ptrace/libunwind-ptrace.pc +@BUILD_SETJMP_TRUE@am__append_23 = setjmp/libunwind-setjmp.pc +@USE_DWARF_TRUE@am__append_24 = libunwind-dwarf-common.la libunwind-dwarf-generic.la +@REMOTE_ONLY_FALSE@@USE_DWARF_TRUE@am__append_25 = libunwind-dwarf-local.la +@USE_DWARF_TRUE@am__append_26 = libunwind-dwarf-local.la +@OS_LINUX_TRUE@am__append_27 = coredump/_UCD_access_reg_linux.c \ @OS_LINUX_TRUE@ coredump/_UCD_get_threadinfo_prstatus.c \ @OS_LINUX_TRUE@ coredump/_UCD_get_mapinfo_linux.c -@OS_FREEBSD_TRUE@am__append_27 = coredump/_UCD_access_reg_freebsd.c \ +@OS_FREEBSD_TRUE@am__append_28 = coredump/_UCD_access_reg_freebsd.c \ @OS_FREEBSD_TRUE@ coredump/_UCD_get_threadinfo_prstatus.c \ @OS_FREEBSD_TRUE@ coredump/_UCD_get_mapinfo_generic.c -@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@am__append_28 = libunwind.la -lc -@ARCH_AARCH64_TRUE@am__append_29 = aarch64/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@@REMOTE_ONLY_FALSE@am__append_30 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@am__append_31 = arm/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__append_32 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@am__append_33 = ia64/setjmp.S ia64/sigsetjmp.S \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ ia64/longjmp.S ia64/siglongjmp.S - -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@@REMOTE_ONLY_FALSE@am__append_34 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@am__append_35 = hppa/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@@REMOTE_ONLY_FALSE@am__append_36 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@am__append_37 = mips/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@@REMOTE_ONLY_FALSE@am__append_38 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@am__append_39 = tilegx/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@@REMOTE_ONLY_FALSE@am__append_40 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@am__append_41 = riscv/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@REMOTE_ONLY_FALSE@am__append_42 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@am__append_43 = loongarch64/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@@REMOTE_ONLY_FALSE@am__append_44 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@am__append_45 = x86/longjmp.S x86/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__append_46 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@am__append_47 = x86_64/longjmp.S x86_64/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__append_48 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am__append_49 = ppc/longjmp.S ppc/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__append_50 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am__append_51 = ppc/longjmp.S ppc/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__append_52 = libunwind.la -lc -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am__append_53 = sh/siglongjmp.S -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__append_54 = libunwind.la -lc +@OS_QNX_TRUE@am__append_29 = coredump/_UCD_access_reg_qnx.c \ +@OS_QNX_TRUE@ coredump/_UCD_get_threadinfo_prstatus.c \ +@OS_QNX_TRUE@ coredump/_UCD_get_mapinfo_qnx.c +@ARCH_AARCH64_TRUE@am__append_30 = \ +@ARCH_AARCH64_TRUE@ aarch64/longjmp.S \ +@ARCH_AARCH64_TRUE@ aarch64/siglongjmp.S + +@ARCH_ARM_TRUE@am__append_31 = arm/siglongjmp.S +@ARCH_HPPA_TRUE@am__append_32 = hppa/siglongjmp.S +@ARCH_IA64_TRUE@am__append_33 = \ +@ARCH_IA64_TRUE@ ia64/longjmp.S \ +@ARCH_IA64_TRUE@ ia64/setjmp.S \ +@ARCH_IA64_TRUE@ ia64/siglongjmp.S \ +@ARCH_IA64_TRUE@ ia64/sigsetjmp.S + +@ARCH_LOONGARCH64_TRUE@am__append_34 = \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/siglongjmp.S + +@ARCH_MIPS_TRUE@am__append_35 = mips/siglongjmp.S +@ARCH_PPC32_TRUE@am__append_36 = \ +@ARCH_PPC32_TRUE@ ppc/longjmp.S \ +@ARCH_PPC32_TRUE@ ppc/siglongjmp.S + +@ARCH_PPC64_TRUE@am__append_37 = \ +@ARCH_PPC64_TRUE@ ppc/longjmp.S \ +@ARCH_PPC64_TRUE@ ppc/siglongjmp.S + +@ARCH_RISCV_TRUE@am__append_38 = \ +@ARCH_RISCV_TRUE@ riscv/siglongjmp.S + +@ARCH_SH_TRUE@am__append_39 = sh/siglongjmp.S +@ARCH_X86_TRUE@am__append_40 = \ +@ARCH_X86_TRUE@ x86/longjmp.S \ +@ARCH_X86_TRUE@ x86/siglongjmp.S + +@ARCH_X86_64_TRUE@am__append_41 = \ +@ARCH_X86_64_TRUE@ x86_64/longjmp.S \ +@ARCH_X86_64_TRUE@ x86_64/siglongjmp.S + subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ @@ -194,59 +227,61 @@ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) -@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_1 = \ -@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@ libunwind.la -@ARCH_AARCH64_TRUE@libunwind_aarch64_la_DEPENDENCIES = \ -@ARCH_AARCH64_TRUE@ libunwind-dwarf-generic.la \ -@ARCH_AARCH64_TRUE@ libunwind-elf64.la $(am__DEPENDENCIES_1) +@REMOTE_ONLY_FALSE@am__DEPENDENCIES_1 = libunwind.la +am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) +libunwind_aarch64_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf64.la $(am__DEPENDENCIES_2) am__libunwind_aarch64_la_SOURCES_DIST = os-freebsd.c os-hpux.c \ os-linux.c dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c aarch64/is_fpreg.c \ - aarch64/regname.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ + aarch64/regname.c mi/Gaddress_validator.c \ + mi/Gdestroy_addr_space.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c aarch64/Gapply_reg_state.c \ - aarch64/Greg_states_iterate.c aarch64/Gcreate_addr_space.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c aarch64/Gos-freebsd.c \ + aarch64/Gos-linux.c aarch64/Gos-qnx.c \ + aarch64/Gapply_reg_state.c aarch64/Gcreate_addr_space.c \ aarch64/Gget_proc_info.c aarch64/Gget_save_loc.c \ aarch64/Gglobal.c aarch64/Ginit.c aarch64/Ginit_local.c \ aarch64/Ginit_remote.c aarch64/Gis_signal_frame.c \ - aarch64/Gregs.c aarch64/Gresume.c aarch64/Gstash_frame.c \ - aarch64/Gstep.c aarch64/Gtrace.c -am__objects_1 = os-freebsd.lo -am__objects_2 = os-hpux.lo -am__objects_3 = os-linux.lo dl-iterate-phdr.lo -am__objects_4 = os-qnx.lo -am__objects_5 = os-solaris.lo -@OS_FREEBSD_FALSE@@OS_HPUX_FALSE@@OS_LINUX_FALSE@@OS_QNX_FALSE@@OS_SOLARIS_TRUE@am__objects_6 = $(am__objects_5) -@OS_FREEBSD_FALSE@@OS_HPUX_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_6 = $(am__objects_4) -@OS_FREEBSD_FALSE@@OS_HPUX_FALSE@@OS_LINUX_TRUE@am__objects_6 = $(am__objects_3) -@OS_FREEBSD_FALSE@@OS_HPUX_TRUE@am__objects_6 = $(am__objects_2) -@OS_FREEBSD_TRUE@am__objects_6 = $(am__objects_1) + aarch64/Gregs.c aarch64/Greg_states_iterate.c \ + aarch64/Gresume.c aarch64/Gstash_frame.c aarch64/Gstep.c \ + aarch64/Gtrace.c +@OS_FREEBSD_FALSE@@OS_HPUX_FALSE@@OS_LINUX_FALSE@@OS_QNX_FALSE@@OS_SOLARIS_TRUE@am__objects_1 = os-solaris.lo +@OS_FREEBSD_FALSE@@OS_HPUX_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_1 = os-qnx.lo +@OS_FREEBSD_FALSE@@OS_HPUX_FALSE@@OS_LINUX_TRUE@am__objects_1 = \ +@OS_FREEBSD_FALSE@@OS_HPUX_FALSE@@OS_LINUX_TRUE@ os-linux.lo \ +@OS_FREEBSD_FALSE@@OS_HPUX_FALSE@@OS_LINUX_TRUE@ dl-iterate-phdr.lo +@OS_FREEBSD_FALSE@@OS_HPUX_TRUE@am__objects_1 = os-hpux.lo +@OS_FREEBSD_TRUE@am__objects_1 = os-freebsd.lo am__dirstamp = $(am__leading_dot)dirstamp -am__objects_7 = $(am__objects_6) mi/init.lo mi/flush_cache.lo \ +am__objects_2 = $(am__objects_1) mi/init.lo mi/flush_cache.lo \ mi/mempool.lo mi/strerror.lo -am__objects_8 = $(am__objects_7) aarch64/is_fpreg.lo \ +am__objects_3 = $(am__objects_2) aarch64/is_fpreg.lo \ aarch64/regname.lo -am__objects_9 = mi/Gdyn-extract.lo mi/Gdyn-remote.lo \ +am__objects_4 = mi/Gaddress_validator.lo mi/Gdestroy_addr_space.lo \ + mi/Gdyn-extract.lo mi/Gdyn-remote.lo \ mi/Gfind_dynamic_proc_info.lo mi/Gget_accessors.lo \ - mi/Gget_proc_info_by_ip.lo mi/Gget_proc_name.lo \ - mi/Gget_proc_info_in_range.lo mi/Gput_dynamic_unwind_info.lo \ - mi/Gdestroy_addr_space.lo mi/Gget_reg.lo mi/Gset_reg.lo \ - mi/Gget_fpreg.lo mi/Gset_fpreg.lo mi/Gset_caching_policy.lo \ - mi/Gset_cache_size.lo -am__objects_10 = $(am__objects_8) $(am__objects_9) \ - aarch64/Gapply_reg_state.lo aarch64/Greg_states_iterate.lo \ + mi/Gget_fpreg.lo mi/Gget_proc_info_by_ip.lo \ + mi/Gget_proc_name.lo mi/Gget_reg.lo \ + mi/Gput_dynamic_unwind_info.lo mi/Gset_cache_size.lo \ + mi/Gset_caching_policy.lo mi/Gset_fpreg.lo \ + mi/Gset_iterate_phdr_function.lo mi/Gset_reg.lo \ + mi/Gget_elf_filename.lo +@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_5 = aarch64/Gos-qnx.lo +@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_5 = aarch64/Gos-linux.lo +@OS_FREEBSD_TRUE@am__objects_5 = aarch64/Gos-freebsd.lo +am_libunwind_aarch64_la_OBJECTS = $(am__objects_3) $(am__objects_4) \ + $(am__objects_5) aarch64/Gapply_reg_state.lo \ aarch64/Gcreate_addr_space.lo aarch64/Gget_proc_info.lo \ aarch64/Gget_save_loc.lo aarch64/Gglobal.lo aarch64/Ginit.lo \ aarch64/Ginit_local.lo aarch64/Ginit_remote.lo \ aarch64/Gis_signal_frame.lo aarch64/Gregs.lo \ - aarch64/Gresume.lo aarch64/Gstash_frame.lo aarch64/Gstep.lo \ - aarch64/Gtrace.lo -@ARCH_AARCH64_TRUE@am_libunwind_aarch64_la_OBJECTS = \ -@ARCH_AARCH64_TRUE@ $(am__objects_10) + aarch64/Greg_states_iterate.lo aarch64/Gresume.lo \ + aarch64/Gstash_frame.lo aarch64/Gstep.lo aarch64/Gtrace.lo libunwind_aarch64_la_OBJECTS = $(am_libunwind_aarch64_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) @@ -257,40 +292,36 @@ $(AM_CFLAGS) $(CFLAGS) $(libunwind_aarch64_la_LDFLAGS) \ $(LDFLAGS) -o $@ @ARCH_AARCH64_TRUE@am_libunwind_aarch64_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_2 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@libunwind_arm_la_DEPENDENCIES = \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ $(am__DEPENDENCIES_2) +libunwind_arm_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf32.la $(am__DEPENDENCIES_2) am__libunwind_arm_la_SOURCES_DIST = os-freebsd.c os-hpux.c os-linux.c \ dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c arm/is_fpreg.c \ arm/regname.c arm/Gos-freebsd.c arm/Gos-linux.c \ - arm/Gos-other.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ + arm/Gos-other.c mi/Gaddress_validator.c \ + mi/Gdestroy_addr_space.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c arm/Gapply_reg_state.c \ - arm/Greg_states_iterate.c arm/Gcreate_addr_space.c \ - arm/Gget_proc_info.c arm/Gget_save_loc.c arm/Gglobal.c \ - arm/Ginit.c arm/Ginit_local.c arm/Ginit_remote.c arm/Gregs.c \ - arm/Gresume.c arm/Gstep.c arm/Gex_tables.c arm/Gstash_frame.c \ - arm/Gtrace.c -am__objects_11 = $(am__objects_7) arm/is_fpreg.lo arm/regname.lo -@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_12 = arm/Gos-other.lo -@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_12 = arm/Gos-linux.lo -@OS_FREEBSD_TRUE@am__objects_12 = arm/Gos-freebsd.lo -am__objects_13 = $(am__objects_11) $(am__objects_12) $(am__objects_9) \ - arm/Gapply_reg_state.lo arm/Greg_states_iterate.lo \ - arm/Gcreate_addr_space.lo arm/Gget_proc_info.lo \ - arm/Gget_save_loc.lo arm/Gglobal.lo arm/Ginit.lo \ - arm/Ginit_local.lo arm/Ginit_remote.lo arm/Gregs.lo \ - arm/Gresume.lo arm/Gstep.lo arm/Gex_tables.lo \ - arm/Gstash_frame.lo arm/Gtrace.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@am_libunwind_arm_la_OBJECTS = \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ $(am__objects_13) + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c arm/Gapply_reg_state.c \ + arm/Gcreate_addr_space.c arm/Gex_tables.c arm/Gget_proc_info.c \ + arm/Gget_save_loc.c arm/Gglobal.c arm/Ginit.c \ + arm/Ginit_local.c arm/Ginit_remote.c arm/Gregs.c \ + arm/Greg_states_iterate.c arm/Gresume.c arm/Gstash_frame.c \ + arm/Gstep.c arm/Gtrace.c +am__objects_6 = $(am__objects_2) arm/is_fpreg.lo arm/regname.lo +@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_7 = arm/Gos-other.lo +@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_7 = arm/Gos-linux.lo +@OS_FREEBSD_TRUE@am__objects_7 = arm/Gos-freebsd.lo +am_libunwind_arm_la_OBJECTS = $(am__objects_6) $(am__objects_7) \ + $(am__objects_4) arm/Gapply_reg_state.lo \ + arm/Gcreate_addr_space.lo arm/Gex_tables.lo \ + arm/Gget_proc_info.lo arm/Gget_save_loc.lo arm/Gglobal.lo \ + arm/Ginit.lo arm/Ginit_local.lo arm/Ginit_remote.lo \ + arm/Gregs.lo arm/Greg_states_iterate.lo arm/Gresume.lo \ + arm/Gstash_frame.lo arm/Gstep.lo arm/Gtrace.lo libunwind_arm_la_OBJECTS = $(am_libunwind_arm_la_OBJECTS) libunwind_arm_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -300,34 +331,40 @@ am__DEPENDENCIES_3 = libunwind_coredump_la_DEPENDENCIES = libunwind-$(arch).la \ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) -am__libunwind_coredump_la_SOURCES_DIST = coredump/_UCD_accessors.c \ +am__libunwind_coredump_la_SOURCES_DIST = coredump/_UCD_access_mem.c \ + coredump/_UCD_accessors.c coredump/_UCD_corefile_elf.c \ coredump/_UCD_create.c coredump/_UCD_destroy.c \ - coredump/_UCD_access_mem.c coredump/_UCD_elf_map_image.c \ + coredump/_UCD_elf_map_image.c coredump/ucd_file_table.c \ coredump/_UCD_find_proc_info.c coredump/_UCD_get_proc_name.c \ - coredump/_UCD_corefile_elf.c coredump/ucd_file_table.c \ - coredump/_UPT_elf.c coredump/_UPT_access_fpreg.c \ + coredump/_UCD_get_elf_filename.c mi/init.c coredump/_UPT_elf.c \ + coredump/_UPT_access_fpreg.c \ coredump/_UPT_get_dyn_info_list_addr.c \ coredump/_UPT_put_unwind_info.c coredump/_UPT_resume.c \ coredump/_UCD_access_reg_linux.c \ coredump/_UCD_get_threadinfo_prstatus.c \ coredump/_UCD_get_mapinfo_linux.c \ coredump/_UCD_access_reg_freebsd.c \ - coredump/_UCD_get_mapinfo_generic.c -@OS_LINUX_TRUE@am__objects_14 = coredump/_UCD_access_reg_linux.lo \ + coredump/_UCD_get_mapinfo_generic.c \ + coredump/_UCD_access_reg_qnx.c coredump/_UCD_get_mapinfo_qnx.c +@OS_LINUX_TRUE@am__objects_8 = coredump/_UCD_access_reg_linux.lo \ @OS_LINUX_TRUE@ coredump/_UCD_get_threadinfo_prstatus.lo \ @OS_LINUX_TRUE@ coredump/_UCD_get_mapinfo_linux.lo -@OS_FREEBSD_TRUE@am__objects_15 = coredump/_UCD_access_reg_freebsd.lo \ +@OS_FREEBSD_TRUE@am__objects_9 = coredump/_UCD_access_reg_freebsd.lo \ @OS_FREEBSD_TRUE@ coredump/_UCD_get_threadinfo_prstatus.lo \ @OS_FREEBSD_TRUE@ coredump/_UCD_get_mapinfo_generic.lo -am_libunwind_coredump_la_OBJECTS = coredump/_UCD_accessors.lo \ +@OS_QNX_TRUE@am__objects_10 = coredump/_UCD_access_reg_qnx.lo \ +@OS_QNX_TRUE@ coredump/_UCD_get_threadinfo_prstatus.lo \ +@OS_QNX_TRUE@ coredump/_UCD_get_mapinfo_qnx.lo +am_libunwind_coredump_la_OBJECTS = coredump/_UCD_access_mem.lo \ + coredump/_UCD_accessors.lo coredump/_UCD_corefile_elf.lo \ coredump/_UCD_create.lo coredump/_UCD_destroy.lo \ - coredump/_UCD_access_mem.lo coredump/_UCD_elf_map_image.lo \ + coredump/_UCD_elf_map_image.lo coredump/ucd_file_table.lo \ coredump/_UCD_find_proc_info.lo coredump/_UCD_get_proc_name.lo \ - coredump/_UCD_corefile_elf.lo coredump/ucd_file_table.lo \ + coredump/_UCD_get_elf_filename.lo mi/init.lo \ coredump/_UPT_elf.lo coredump/_UPT_access_fpreg.lo \ coredump/_UPT_get_dyn_info_list_addr.lo \ coredump/_UPT_put_unwind_info.lo coredump/_UPT_resume.lo \ - $(am__objects_14) $(am__objects_15) + $(am__objects_8) $(am__objects_9) $(am__objects_10) libunwind_coredump_la_OBJECTS = $(am_libunwind_coredump_la_OBJECTS) libunwind_coredump_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -341,15 +378,15 @@ @USE_DWARF_TRUE@am_libunwind_dwarf_common_la_rpath = libunwind_dwarf_generic_la_DEPENDENCIES = libunwind-dwarf-common.la am_libunwind_dwarf_generic_la_OBJECTS = dwarf/Gexpr.lo dwarf/Gfde.lo \ - dwarf/Gparser.lo dwarf/Gpe.lo dwarf/Gfind_proc_info-lsb.lo \ - dwarf/Gfind_unwind_table.lo + dwarf/Gfind_proc_info-lsb.lo dwarf/Gfind_unwind_table.lo \ + dwarf/Gget_proc_info_in_range.lo dwarf/Gparser.lo dwarf/Gpe.lo libunwind_dwarf_generic_la_OBJECTS = \ $(am_libunwind_dwarf_generic_la_OBJECTS) @USE_DWARF_TRUE@am_libunwind_dwarf_generic_la_rpath = libunwind_dwarf_local_la_DEPENDENCIES = libunwind-dwarf-common.la am_libunwind_dwarf_local_la_OBJECTS = dwarf/Lexpr.lo dwarf/Lfde.lo \ - dwarf/Lparser.lo dwarf/Lpe.lo dwarf/Lfind_proc_info-lsb.lo \ - dwarf/Lfind_unwind_table.lo + dwarf/Lfind_proc_info-lsb.lo dwarf/Lfind_unwind_table.lo \ + dwarf/Lget_proc_info_in_range.lo dwarf/Lparser.lo dwarf/Lpe.lo libunwind_dwarf_local_la_OBJECTS = \ $(am_libunwind_dwarf_local_la_OBJECTS) @REMOTE_ONLY_FALSE@@USE_DWARF_TRUE@am_libunwind_dwarf_local_la_rpath = @@ -368,108 +405,103 @@ am_libunwind_elfxx_la_OBJECTS = elfxx.lo libunwind_elfxx_la_OBJECTS = $(am_libunwind_elfxx_la_OBJECTS) @USE_ELFXX_TRUE@am_libunwind_elfxx_la_rpath = -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_4 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@libunwind_hppa_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@ $(am__DEPENDENCIES_4) +libunwind_hppa_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf32.la $(am__DEPENDENCIES_2) am__libunwind_hppa_la_SOURCES_DIST = os-freebsd.c os-hpux.c os-linux.c \ dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c hppa/regname.c \ + mi/Gaddress_validator.c mi/Gdestroy_addr_space.c \ mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c hppa/Gapply_reg_state.c \ - hppa/Greg_states_iterate.c hppa/Gcreate_addr_space.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c hppa/Gapply_reg_state.c \ + hppa/Gcreate_addr_space.c hppa/Gget_proc_info.c \ hppa/Gget_save_loc.c hppa/Gglobal.c hppa/Ginit.c \ hppa/Ginit_local.c hppa/Ginit_remote.c hppa/Gis_signal_frame.c \ - hppa/Gget_proc_info.c hppa/Gregs.c hppa/Gresume.c hppa/Gstep.c -am__objects_16 = $(am__objects_7) hppa/regname.lo -am__objects_17 = $(am__objects_16) $(am__objects_9) \ - hppa/Gapply_reg_state.lo hppa/Greg_states_iterate.lo \ - hppa/Gcreate_addr_space.lo hppa/Gget_save_loc.lo \ - hppa/Gglobal.lo hppa/Ginit.lo hppa/Ginit_local.lo \ - hppa/Ginit_remote.lo hppa/Gis_signal_frame.lo \ - hppa/Gget_proc_info.lo hppa/Gregs.lo hppa/Gresume.lo \ - hppa/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@am_libunwind_hppa_la_OBJECTS = $(am__objects_17) + hppa/Gregs.c hppa/Greg_states_iterate.c hppa/Gresume.c \ + hppa/Gstep.c +am__objects_11 = $(am__objects_2) hppa/regname.lo +am_libunwind_hppa_la_OBJECTS = $(am__objects_11) $(am__objects_4) \ + hppa/Gapply_reg_state.lo hppa/Gcreate_addr_space.lo \ + hppa/Gget_proc_info.lo hppa/Gget_save_loc.lo hppa/Gglobal.lo \ + hppa/Ginit.lo hppa/Ginit_local.lo hppa/Ginit_remote.lo \ + hppa/Gis_signal_frame.lo hppa/Gregs.lo \ + hppa/Greg_states_iterate.lo hppa/Gresume.lo hppa/Gstep.lo libunwind_hppa_la_OBJECTS = $(am_libunwind_hppa_la_OBJECTS) libunwind_hppa_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_hppa_la_LDFLAGS) $(LDFLAGS) \ -o $@ @ARCH_HPPA_TRUE@am_libunwind_hppa_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_5 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@libunwind_ia64_la_DEPENDENCIES = libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ $(am__DEPENDENCIES_5) +libunwind_ia64_la_DEPENDENCIES = libunwind-elf64.la \ + $(am__DEPENDENCIES_2) am__libunwind_ia64_la_SOURCES_DIST = os-freebsd.c os-hpux.c os-linux.c \ dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c ia64/regname.c \ + mi/Gaddress_validator.c mi/Gdestroy_addr_space.c \ mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c ia64/Gapply_reg_state.c \ - ia64/Greg_states_iterate.c ia64/Gcreate_addr_space.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c ia64/Gapply_reg_state.c \ + ia64/Gcreate_addr_space.c ia64/Gfind_unwind_table.c \ ia64/Gget_proc_info.c ia64/Gget_save_loc.c ia64/Gglobal.c \ ia64/Ginit.c ia64/Ginit_local.c ia64/Ginit_remote.c \ ia64/Ginstall_cursor.S ia64/Gis_signal_frame.c ia64/Gparser.c \ - ia64/Grbs.c ia64/Gregs.c ia64/Gresume.c ia64/Gscript.c \ - ia64/Gstep.c ia64/Gtables.c ia64/Gfind_unwind_table.c -am__objects_18 = $(am__objects_7) ia64/regname.lo -am__objects_19 = $(am__objects_18) $(am__objects_9) \ - ia64/Gapply_reg_state.lo ia64/Greg_states_iterate.lo \ - ia64/Gcreate_addr_space.lo ia64/Gget_proc_info.lo \ + ia64/Grbs.c ia64/Gregs.c ia64/Greg_states_iterate.c \ + ia64/Gresume.c ia64/Gscript.c ia64/Gstep.c ia64/Gtables.c +am__objects_12 = $(am__objects_2) ia64/regname.lo +am_libunwind_ia64_la_OBJECTS = $(am__objects_12) $(am__objects_4) \ + ia64/Gapply_reg_state.lo ia64/Gcreate_addr_space.lo \ + ia64/Gfind_unwind_table.lo ia64/Gget_proc_info.lo \ ia64/Gget_save_loc.lo ia64/Gglobal.lo ia64/Ginit.lo \ ia64/Ginit_local.lo ia64/Ginit_remote.lo \ ia64/Ginstall_cursor.lo ia64/Gis_signal_frame.lo \ - ia64/Gparser.lo ia64/Grbs.lo ia64/Gregs.lo ia64/Gresume.lo \ - ia64/Gscript.lo ia64/Gstep.lo ia64/Gtables.lo \ - ia64/Gfind_unwind_table.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@am_libunwind_ia64_la_OBJECTS = $(am__objects_19) + ia64/Gparser.lo ia64/Grbs.lo ia64/Gregs.lo \ + ia64/Greg_states_iterate.lo ia64/Gresume.lo ia64/Gscript.lo \ + ia64/Gstep.lo ia64/Gtables.lo libunwind_ia64_la_OBJECTS = $(am_libunwind_ia64_la_OBJECTS) libunwind_ia64_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_ia64_la_LDFLAGS) $(LDFLAGS) \ -o $@ @ARCH_IA64_TRUE@am_libunwind_ia64_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_6 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@libunwind_loongarch64_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@ $(am__DEPENDENCIES_6) +libunwind_loongarch64_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf64.la $(am__DEPENDENCIES_2) am__libunwind_loongarch64_la_SOURCES_DIST = os-freebsd.c os-hpux.c \ os-linux.c dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c \ - loongarch64/is_fpreg.c loongarch64/regname.c mi/Gdyn-extract.c \ - mi/Gdyn-remote.c mi/Gfind_dynamic_proc_info.c \ - mi/Gget_accessors.c mi/Gget_proc_info_by_ip.c \ - mi/Gget_proc_name.c mi/Gget_proc_info_in_range.c \ - mi/Gput_dynamic_unwind_info.c mi/Gdestroy_addr_space.c \ - mi/Gget_reg.c mi/Gset_reg.c mi/Gget_fpreg.c mi/Gset_fpreg.c \ - mi/Gset_caching_policy.c mi/Gset_cache_size.c \ - loongarch64/Gapply_reg_state.c \ - loongarch64/Greg_states_iterate.c \ + loongarch64/is_fpreg.c loongarch64/regname.c \ + mi/Gaddress_validator.c mi/Gdestroy_addr_space.c \ + mi/Gdyn-extract.c mi/Gdyn-remote.c \ + mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c loongarch64/Gapply_reg_state.c \ loongarch64/Gcreate_addr_space.c loongarch64/Gget_proc_info.c \ loongarch64/Gget_save_loc.c loongarch64/Gglobal.c \ loongarch64/Ginit.c loongarch64/Ginit_local.c \ loongarch64/Ginit_remote.c loongarch64/Gis_signal_frame.c \ - loongarch64/Gregs.c loongarch64/Gresume.c loongarch64/Gstep.c -am__objects_20 = $(am__objects_7) loongarch64/is_fpreg.lo \ + loongarch64/Gregs.c loongarch64/Greg_states_iterate.c \ + loongarch64/Gresume.c loongarch64/Gstep.c +am__objects_13 = $(am__objects_2) loongarch64/is_fpreg.lo \ loongarch64/regname.lo -am__objects_21 = $(am__objects_20) $(am__objects_9) \ - loongarch64/Gapply_reg_state.lo \ - loongarch64/Greg_states_iterate.lo \ +am_libunwind_loongarch64_la_OBJECTS = $(am__objects_13) \ + $(am__objects_4) loongarch64/Gapply_reg_state.lo \ loongarch64/Gcreate_addr_space.lo \ loongarch64/Gget_proc_info.lo loongarch64/Gget_save_loc.lo \ loongarch64/Gglobal.lo loongarch64/Ginit.lo \ loongarch64/Ginit_local.lo loongarch64/Ginit_remote.lo \ loongarch64/Gis_signal_frame.lo loongarch64/Gregs.lo \ - loongarch64/Gresume.lo loongarch64/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@am_libunwind_loongarch64_la_OBJECTS = $(am__objects_21) + loongarch64/Greg_states_iterate.lo loongarch64/Gresume.lo \ + loongarch64/Gstep.lo libunwind_loongarch64_la_OBJECTS = \ $(am_libunwind_loongarch64_la_OBJECTS) libunwind_loongarch64_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ @@ -478,100 +510,109 @@ $(LDFLAGS) -o $@ @ARCH_LOONGARCH64_TRUE@am_libunwind_loongarch64_la_rpath = -rpath \ @ARCH_LOONGARCH64_TRUE@ $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_7 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@libunwind_mips_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@ libunwind-elfxx.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@ $(am__DEPENDENCIES_7) +libunwind_mips_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elfxx.la $(am__DEPENDENCIES_2) am__libunwind_mips_la_SOURCES_DIST = os-freebsd.c os-hpux.c os-linux.c \ dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c mips/is_fpreg.c \ - mips/regname.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ + mips/regname.c mi/Gaddress_validator.c \ + mi/Gdestroy_addr_space.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c mips/Gapply_reg_state.c \ - mips/Greg_states_iterate.c mips/Gcreate_addr_space.c \ - mips/Gget_proc_info.c mips/Gget_save_loc.c mips/Gglobal.c \ - mips/Ginit.c mips/Ginit_local.c mips/Ginit_remote.c \ - mips/Gis_signal_frame.c mips/Gregs.c mips/Gresume.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c mips/Gapply_reg_state.c \ + mips/Gcreate_addr_space.c mips/Gget_proc_info.c \ + mips/Gget_save_loc.c mips/Gglobal.c mips/Ginit.c \ + mips/Ginit_local.c mips/Ginit_remote.c mips/Gis_signal_frame.c \ + mips/Gregs.c mips/Greg_states_iterate.c mips/Gresume.c \ mips/Gstep.c -am__objects_22 = $(am__objects_7) mips/is_fpreg.lo mips/regname.lo -am__objects_23 = $(am__objects_22) $(am__objects_9) \ - mips/Gapply_reg_state.lo mips/Greg_states_iterate.lo \ - mips/Gcreate_addr_space.lo mips/Gget_proc_info.lo \ - mips/Gget_save_loc.lo mips/Gglobal.lo mips/Ginit.lo \ - mips/Ginit_local.lo mips/Ginit_remote.lo \ - mips/Gis_signal_frame.lo mips/Gregs.lo mips/Gresume.lo \ - mips/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@am_libunwind_mips_la_OBJECTS = $(am__objects_23) +am__objects_14 = $(am__objects_2) mips/is_fpreg.lo mips/regname.lo +am_libunwind_mips_la_OBJECTS = $(am__objects_14) $(am__objects_4) \ + mips/Gapply_reg_state.lo mips/Gcreate_addr_space.lo \ + mips/Gget_proc_info.lo mips/Gget_save_loc.lo mips/Gglobal.lo \ + mips/Ginit.lo mips/Ginit_local.lo mips/Ginit_remote.lo \ + mips/Gis_signal_frame.lo mips/Gregs.lo \ + mips/Greg_states_iterate.lo mips/Gresume.lo mips/Gstep.lo libunwind_mips_la_OBJECTS = $(am_libunwind_mips_la_OBJECTS) libunwind_mips_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_mips_la_LDFLAGS) $(LDFLAGS) \ -o $@ @ARCH_MIPS_TRUE@am_libunwind_mips_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_8 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_ppc32_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ $(am__DEPENDENCIES_8) +libunwind_nto_la_DEPENDENCIES = libunwind-$(arch).la \ + $(am__DEPENDENCIES_2) +am_libunwind_nto_la_OBJECTS = mi/init.lo nto/unw_nto_access_fpreg.lo \ + nto/unw_nto_access_mem.lo nto/unw_nto_accessors.lo \ + nto/unw_nto_access_reg.lo nto/unw_nto_create.lo \ + nto/unw_nto_destroy.lo nto/unw_nto_elf.lo \ + nto/unw_nto_find_proc_info.lo \ + nto/unw_nto_get_dyn_info_list_addr.lo \ + nto/unw_nto_get_proc_name.lo nto/unw_nto_get_elf_filename.lo \ + nto/unw_nto_put_unwind_info.lo nto/unw_nto_resume.lo +libunwind_nto_la_OBJECTS = $(am_libunwind_nto_la_OBJECTS) +@BUILD_NTO_TRUE@am_libunwind_nto_la_rpath = -rpath $(libdir) +libunwind_ppc32_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf32.la $(am__DEPENDENCIES_2) am__libunwind_ppc32_la_SOURCES_DIST = os-freebsd.c os-hpux.c \ os-linux.c dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ - mi/flush_cache.c mi/mempool.c mi/strerror.c ppc32/is_fpreg.c \ - ppc32/regname.c ppc32/get_func_addr.c mi/Gdyn-extract.c \ - mi/Gdyn-remote.c mi/Gfind_dynamic_proc_info.c \ - mi/Gget_accessors.c mi/Gget_proc_info_by_ip.c \ - mi/Gget_proc_name.c mi/Gget_proc_info_in_range.c \ - mi/Gput_dynamic_unwind_info.c mi/Gdestroy_addr_space.c \ - mi/Gget_reg.c mi/Gset_reg.c mi/Gget_fpreg.c mi/Gset_fpreg.c \ - mi/Gset_caching_policy.c mi/Gset_cache_size.c \ - ppc/Gget_proc_info.c ppc/Gget_save_loc.c ppc/Ginit_local.c \ - ppc/Ginit_remote.c ppc/Gis_signal_frame.c \ - ppc32/Gapply_reg_state.c ppc32/Greg_states_iterate.c \ + mi/flush_cache.c mi/mempool.c mi/strerror.c \ + ppc32/get_func_addr.c ppc32/is_fpreg.c ppc32/regname.c \ + mi/Gaddress_validator.c mi/Gdestroy_addr_space.c \ + mi/Gdyn-extract.c mi/Gdyn-remote.c \ + mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c ppc/Gget_proc_info.c \ + ppc/Gget_save_loc.c ppc/Ginit_local.c ppc/Ginit_remote.c \ + ppc/Gis_signal_frame.c ppc32/Gapply_reg_state.c \ ppc32/Gcreate_addr_space.c ppc32/Gglobal.c ppc32/Ginit.c \ - ppc32/Gregs.c ppc32/Gresume.c ppc32/Gstep.c -am__objects_24 = $(am__objects_7) ppc32/is_fpreg.lo ppc32/regname.lo \ - ppc32/get_func_addr.lo -am__objects_25 = ppc/Gget_proc_info.lo ppc/Gget_save_loc.lo \ + ppc32/Gregs.c ppc32/Greg_states_iterate.c ppc32/Gresume.c \ + ppc32/Gstep.c +am__objects_15 = $(am__objects_2) ppc32/get_func_addr.lo \ + ppc32/is_fpreg.lo ppc32/regname.lo +am__objects_16 = ppc/Gget_proc_info.lo ppc/Gget_save_loc.lo \ ppc/Ginit_local.lo ppc/Ginit_remote.lo ppc/Gis_signal_frame.lo -am__objects_26 = $(am__objects_24) $(am__objects_9) $(am__objects_25) \ - ppc32/Gapply_reg_state.lo ppc32/Greg_states_iterate.lo \ +am_libunwind_ppc32_la_OBJECTS = $(am__objects_15) $(am__objects_4) \ + $(am__objects_16) ppc32/Gapply_reg_state.lo \ ppc32/Gcreate_addr_space.lo ppc32/Gglobal.lo ppc32/Ginit.lo \ - ppc32/Gregs.lo ppc32/Gresume.lo ppc32/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am_libunwind_ppc32_la_OBJECTS = $(am__objects_26) + ppc32/Gregs.lo ppc32/Greg_states_iterate.lo ppc32/Gresume.lo \ + ppc32/Gstep.lo libunwind_ppc32_la_OBJECTS = $(am_libunwind_ppc32_la_OBJECTS) libunwind_ppc32_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_ppc32_la_LDFLAGS) \ $(LDFLAGS) -o $@ @ARCH_PPC32_TRUE@am_libunwind_ppc32_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_9 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_ppc64_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ $(am__DEPENDENCIES_9) +libunwind_ppc64_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf64.la $(am__DEPENDENCIES_2) am__libunwind_ppc64_la_SOURCES_DIST = os-freebsd.c os-hpux.c \ os-linux.c dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ - mi/flush_cache.c mi/mempool.c mi/strerror.c ppc64/is_fpreg.c \ - ppc64/regname.c ppc64/get_func_addr.c mi/Gdyn-extract.c \ - mi/Gdyn-remote.c mi/Gfind_dynamic_proc_info.c \ - mi/Gget_accessors.c mi/Gget_proc_info_by_ip.c \ - mi/Gget_proc_name.c mi/Gget_proc_info_in_range.c \ - mi/Gput_dynamic_unwind_info.c mi/Gdestroy_addr_space.c \ - mi/Gget_reg.c mi/Gset_reg.c mi/Gget_fpreg.c mi/Gset_fpreg.c \ - mi/Gset_caching_policy.c mi/Gset_cache_size.c \ - ppc/Gget_proc_info.c ppc/Gget_save_loc.c ppc/Ginit_local.c \ - ppc/Ginit_remote.c ppc/Gis_signal_frame.c \ - ppc64/Gapply_reg_state.c ppc64/Greg_states_iterate.c \ + mi/flush_cache.c mi/mempool.c mi/strerror.c \ + ppc64/get_func_addr.c ppc64/is_fpreg.c ppc64/regname.c \ + mi/Gaddress_validator.c mi/Gdestroy_addr_space.c \ + mi/Gdyn-extract.c mi/Gdyn-remote.c \ + mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c ppc/Gget_proc_info.c \ + ppc/Gget_save_loc.c ppc/Ginit_local.c ppc/Ginit_remote.c \ + ppc/Gis_signal_frame.c ppc64/Gapply_reg_state.c \ ppc64/Gcreate_addr_space.c ppc64/Gglobal.c ppc64/Ginit.c \ - ppc64/Gregs.c ppc64/Gresume.c ppc64/Gstep.c -am__objects_27 = $(am__objects_7) ppc64/is_fpreg.lo ppc64/regname.lo \ - ppc64/get_func_addr.lo -am__objects_28 = $(am__objects_27) $(am__objects_9) $(am__objects_25) \ - ppc64/Gapply_reg_state.lo ppc64/Greg_states_iterate.lo \ + ppc64/Gregs.c ppc64/Greg_states_iterate.c ppc64/Gresume.c \ + ppc64/Gstep.c +am__objects_17 = $(am__objects_2) ppc64/get_func_addr.lo \ + ppc64/is_fpreg.lo ppc64/regname.lo +am_libunwind_ppc64_la_OBJECTS = $(am__objects_17) $(am__objects_4) \ + $(am__objects_16) ppc64/Gapply_reg_state.lo \ ppc64/Gcreate_addr_space.lo ppc64/Gglobal.lo ppc64/Ginit.lo \ - ppc64/Gregs.lo ppc64/Gresume.lo ppc64/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am_libunwind_ppc64_la_OBJECTS = $(am__objects_28) + ppc64/Gregs.lo ppc64/Greg_states_iterate.lo ppc64/Gresume.lo \ + ppc64/Gstep.lo libunwind_ppc64_la_OBJECTS = $(am_libunwind_ppc64_la_OBJECTS) libunwind_ppc64_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -579,527 +620,579 @@ $(LDFLAGS) -o $@ @ARCH_PPC64_TRUE@am_libunwind_ppc64_la_rpath = -rpath $(libdir) libunwind_ptrace_la_DEPENDENCIES = libunwind-$(arch).la \ - $(am__DEPENDENCIES_3) -am_libunwind_ptrace_la_OBJECTS = ptrace/_UPT_elf.lo \ - ptrace/_UPT_accessors.lo ptrace/_UPT_access_fpreg.lo \ - ptrace/_UPT_access_mem.lo ptrace/_UPT_access_reg.lo \ + $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) +am_libunwind_ptrace_la_OBJECTS = mi/init.lo \ + ptrace/_UPT_access_fpreg.lo ptrace/_UPT_access_mem.lo \ + ptrace/_UPT_accessors.lo ptrace/_UPT_access_reg.lo \ ptrace/_UPT_create.lo ptrace/_UPT_destroy.lo \ - ptrace/_UPT_find_proc_info.lo \ + ptrace/_UPT_elf.lo ptrace/_UPT_find_proc_info.lo \ ptrace/_UPT_get_dyn_info_list_addr.lo \ - ptrace/_UPT_put_unwind_info.lo ptrace/_UPT_get_proc_name.lo \ - ptrace/_UPT_reg_offset.lo ptrace/_UPT_resume.lo + ptrace/_UPT_get_proc_name.lo ptrace/_UPT_get_elf_filename.lo \ + ptrace/_UPT_put_unwind_info.lo ptrace/_UPT_reg_offset.lo \ + ptrace/_UPT_resume.lo libunwind_ptrace_la_OBJECTS = $(am_libunwind_ptrace_la_OBJECTS) @BUILD_PTRACE_TRUE@am_libunwind_ptrace_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_10 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@libunwind_riscv_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@ $(am__DEPENDENCIES_10) +libunwind_riscv_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf64.la $(am__DEPENDENCIES_2) am__libunwind_riscv_la_SOURCES_DIST = os-freebsd.c os-hpux.c \ os-linux.c dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c riscv/is_fpreg.c \ - riscv/regname.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ + riscv/regname.c mi/Gaddress_validator.c \ + mi/Gdestroy_addr_space.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c riscv/Gapply_reg_state.c \ - riscv/Greg_states_iterate.c riscv/Gcreate_addr_space.c \ - riscv/Gget_proc_info.c riscv/Gget_save_loc.c riscv/Gglobal.c \ - riscv/Ginit.c riscv/Ginit_local.c riscv/Ginit_remote.c \ - riscv/Gis_signal_frame.c riscv/Gregs.c riscv/Gresume.c \ - riscv/Gstep.c -am__objects_29 = $(am__objects_7) riscv/is_fpreg.lo riscv/regname.lo -am__objects_30 = $(am__objects_29) $(am__objects_9) \ - riscv/Gapply_reg_state.lo riscv/Greg_states_iterate.lo \ - riscv/Gcreate_addr_space.lo riscv/Gget_proc_info.lo \ - riscv/Gget_save_loc.lo riscv/Gglobal.lo riscv/Ginit.lo \ - riscv/Ginit_local.lo riscv/Ginit_remote.lo \ - riscv/Gis_signal_frame.lo riscv/Gregs.lo riscv/Gresume.lo \ - riscv/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@am_libunwind_riscv_la_OBJECTS = $(am__objects_30) + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c riscv/Gapply_reg_state.c \ + riscv/Gcreate_addr_space.c riscv/Gget_proc_info.c \ + riscv/Gget_save_loc.c riscv/Gglobal.c riscv/Ginit.c \ + riscv/Ginit_local.c riscv/Ginit_remote.c \ + riscv/Gis_signal_frame.c riscv/Gregs.c \ + riscv/Greg_states_iterate.c riscv/Gresume.c riscv/Gstep.c +am__objects_18 = $(am__objects_2) riscv/is_fpreg.lo riscv/regname.lo +am_libunwind_riscv_la_OBJECTS = $(am__objects_18) $(am__objects_4) \ + riscv/Gapply_reg_state.lo riscv/Gcreate_addr_space.lo \ + riscv/Gget_proc_info.lo riscv/Gget_save_loc.lo \ + riscv/Gglobal.lo riscv/Ginit.lo riscv/Ginit_local.lo \ + riscv/Ginit_remote.lo riscv/Gis_signal_frame.lo riscv/Gregs.lo \ + riscv/Greg_states_iterate.lo riscv/Gresume.lo riscv/Gstep.lo libunwind_riscv_la_OBJECTS = $(am_libunwind_riscv_la_OBJECTS) libunwind_riscv_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_riscv_la_LDFLAGS) \ $(LDFLAGS) -o $@ @ARCH_RISCV_TRUE@am_libunwind_riscv_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_11 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_s390x_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ $(am__DEPENDENCIES_11) +libunwind_s390x_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf64.la $(am__DEPENDENCIES_2) am__libunwind_s390x_la_SOURCES_DIST = os-freebsd.c os-hpux.c \ os-linux.c dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c s390x/is_fpreg.c \ - s390x/regname.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ + s390x/regname.c mi/Gaddress_validator.c \ + mi/Gdestroy_addr_space.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c s390x/Gapply_reg_state.c \ - s390x/Greg_states_iterate.c s390x/Gcreate_addr_space.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c s390x/Gapply_reg_state.c \ + s390x/Gcreate_addr_space.c s390x/Gget_proc_info.c \ s390x/Gget_save_loc.c s390x/Gglobal.c s390x/Ginit.c \ s390x/Ginit_local.c s390x/Ginit_remote.c \ - s390x/Gget_proc_info.c s390x/Gregs.c s390x/Gresume.c \ - s390x/Gis_signal_frame.c s390x/Gstep.c -am__objects_31 = $(am__objects_7) s390x/is_fpreg.lo s390x/regname.lo -am__objects_32 = $(am__objects_31) $(am__objects_9) \ - s390x/Gapply_reg_state.lo s390x/Greg_states_iterate.lo \ - s390x/Gcreate_addr_space.lo s390x/Gget_save_loc.lo \ + s390x/Gis_signal_frame.c s390x/Gregs.c \ + s390x/Greg_states_iterate.c s390x/Gresume.c s390x/Gstep.c +am__objects_19 = $(am__objects_2) s390x/is_fpreg.lo s390x/regname.lo +am_libunwind_s390x_la_OBJECTS = $(am__objects_19) $(am__objects_4) \ + s390x/Gapply_reg_state.lo s390x/Gcreate_addr_space.lo \ + s390x/Gget_proc_info.lo s390x/Gget_save_loc.lo \ s390x/Gglobal.lo s390x/Ginit.lo s390x/Ginit_local.lo \ - s390x/Ginit_remote.lo s390x/Gget_proc_info.lo s390x/Gregs.lo \ - s390x/Gresume.lo s390x/Gis_signal_frame.lo s390x/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am_libunwind_s390x_la_OBJECTS = $(am__objects_32) + s390x/Ginit_remote.lo s390x/Gis_signal_frame.lo s390x/Gregs.lo \ + s390x/Greg_states_iterate.lo s390x/Gresume.lo s390x/Gstep.lo libunwind_s390x_la_OBJECTS = $(am_libunwind_s390x_la_OBJECTS) libunwind_s390x_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_s390x_la_LDFLAGS) \ $(LDFLAGS) -o $@ @ARCH_S390X_TRUE@am_libunwind_s390x_la_rpath = -rpath $(libdir) -libunwind_setjmp_la_DEPENDENCIES = $(LIBUNWIND_ELF) \ - libunwind-$(arch).la libunwind.la -am__libunwind_setjmp_la_SOURCES_DIST = setjmp/longjmp.c \ - setjmp/siglongjmp.c aarch64/siglongjmp.S arm/siglongjmp.S \ - ia64/setjmp.S ia64/sigsetjmp.S ia64/longjmp.S \ - ia64/siglongjmp.S hppa/siglongjmp.S mips/siglongjmp.S \ - tilegx/siglongjmp.S riscv/siglongjmp.S \ - loongarch64/siglongjmp.S x86/longjmp.S x86/siglongjmp.S \ - x86_64/longjmp.S x86_64/siglongjmp.S ppc/longjmp.S \ - ppc/siglongjmp.S sh/siglongjmp.S -@ARCH_AARCH64_TRUE@am__objects_33 = aarch64/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@am__objects_34 = arm/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@am__objects_35 = ia64/setjmp.lo \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ ia64/sigsetjmp.lo \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ ia64/longjmp.lo \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ ia64/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@am__objects_36 = hppa/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@am__objects_37 = mips/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@am__objects_38 = tilegx/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@am__objects_39 = riscv/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@am__objects_40 = loongarch64/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@am__objects_41 = x86/longjmp.lo \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@ x86/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@am__objects_42 = x86_64/longjmp.lo \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@ x86_64/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am__objects_43 = ppc/longjmp.lo \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ ppc/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am__objects_44 = ppc/longjmp.lo \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ ppc/siglongjmp.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am__objects_45 = sh/siglongjmp.lo -am_libunwind_setjmp_la_OBJECTS = setjmp/longjmp.lo \ - setjmp/siglongjmp.lo $(am__objects_33) $(am__objects_34) \ - $(am__objects_35) $(am__objects_36) $(am__objects_37) \ - $(am__objects_38) $(am__objects_39) $(am__objects_40) \ - $(am__objects_41) $(am__objects_42) $(am__objects_43) \ - $(am__objects_44) $(am__objects_45) +libunwind_setjmp_la_DEPENDENCIES = $(libunwind_elf_libs) \ + libunwind-$(arch).la $(am__DEPENDENCIES_2) +am__libunwind_setjmp_la_SOURCES_DIST = mi/init.c setjmp/longjmp.c \ + setjmp/siglongjmp.c aarch64/longjmp.S aarch64/siglongjmp.S \ + arm/siglongjmp.S hppa/siglongjmp.S ia64/longjmp.S \ + ia64/setjmp.S ia64/siglongjmp.S ia64/sigsetjmp.S \ + loongarch64/siglongjmp.S mips/siglongjmp.S ppc/longjmp.S \ + ppc/siglongjmp.S riscv/siglongjmp.S sh/siglongjmp.S \ + x86/longjmp.S x86/siglongjmp.S x86_64/longjmp.S \ + x86_64/siglongjmp.S +@ARCH_AARCH64_TRUE@am__objects_20 = aarch64/longjmp.lo \ +@ARCH_AARCH64_TRUE@ aarch64/siglongjmp.lo +@ARCH_ARM_TRUE@am__objects_21 = arm/siglongjmp.lo +@ARCH_HPPA_TRUE@am__objects_22 = hppa/siglongjmp.lo +@ARCH_IA64_TRUE@am__objects_23 = ia64/longjmp.lo ia64/setjmp.lo \ +@ARCH_IA64_TRUE@ ia64/siglongjmp.lo ia64/sigsetjmp.lo +@ARCH_LOONGARCH64_TRUE@am__objects_24 = loongarch64/siglongjmp.lo +@ARCH_MIPS_TRUE@am__objects_25 = mips/siglongjmp.lo +@ARCH_PPC32_TRUE@am__objects_26 = ppc/longjmp.lo ppc/siglongjmp.lo +@ARCH_PPC64_TRUE@am__objects_27 = ppc/longjmp.lo ppc/siglongjmp.lo +@ARCH_RISCV_TRUE@am__objects_28 = riscv/siglongjmp.lo +@ARCH_SH_TRUE@am__objects_29 = sh/siglongjmp.lo +@ARCH_X86_TRUE@am__objects_30 = x86/longjmp.lo x86/siglongjmp.lo +@ARCH_X86_64_TRUE@am__objects_31 = x86_64/longjmp.lo \ +@ARCH_X86_64_TRUE@ x86_64/siglongjmp.lo +am_libunwind_setjmp_la_OBJECTS = mi/init.lo setjmp/longjmp.lo \ + setjmp/siglongjmp.lo $(am__objects_20) $(am__objects_21) \ + $(am__objects_22) $(am__objects_23) $(am__objects_24) \ + $(am__objects_25) $(am__objects_26) $(am__objects_27) \ + $(am__objects_28) $(am__objects_29) $(am__objects_30) \ + $(am__objects_31) libunwind_setjmp_la_OBJECTS = $(am_libunwind_setjmp_la_OBJECTS) libunwind_setjmp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_setjmp_la_LDFLAGS) \ $(LDFLAGS) -o $@ @BUILD_SETJMP_TRUE@am_libunwind_setjmp_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_12 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_sh_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ $(am__DEPENDENCIES_12) +libunwind_sh_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf32.la $(am__DEPENDENCIES_2) am__libunwind_sh_la_SOURCES_DIST = os-freebsd.c os-hpux.c os-linux.c \ dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c sh/is_fpreg.c \ - sh/regname.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ + sh/regname.c mi/Gaddress_validator.c mi/Gdestroy_addr_space.c \ + mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c sh/Gapply_reg_state.c \ - sh/Greg_states_iterate.c sh/Gcreate_addr_space.c \ - sh/Gget_proc_info.c sh/Gget_save_loc.c sh/Gglobal.c sh/Ginit.c \ - sh/Ginit_local.c sh/Ginit_remote.c sh/Gis_signal_frame.c \ - sh/Gregs.c sh/Gresume.c sh/Gstep.c -am__objects_46 = $(am__objects_7) sh/is_fpreg.lo sh/regname.lo -am__objects_47 = $(am__objects_46) $(am__objects_9) \ - sh/Gapply_reg_state.lo sh/Greg_states_iterate.lo \ - sh/Gcreate_addr_space.lo sh/Gget_proc_info.lo \ - sh/Gget_save_loc.lo sh/Gglobal.lo sh/Ginit.lo \ - sh/Ginit_local.lo sh/Ginit_remote.lo sh/Gis_signal_frame.lo \ - sh/Gregs.lo sh/Gresume.lo sh/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am_libunwind_sh_la_OBJECTS = $(am__objects_47) + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c sh/Gapply_reg_state.c \ + sh/Gcreate_addr_space.c sh/Gget_proc_info.c sh/Gget_save_loc.c \ + sh/Gglobal.c sh/Ginit.c sh/Ginit_local.c sh/Ginit_remote.c \ + sh/Gis_signal_frame.c sh/Gregs.c sh/Greg_states_iterate.c \ + sh/Gresume.c sh/Gstep.c +am__objects_32 = $(am__objects_2) sh/is_fpreg.lo sh/regname.lo +am_libunwind_sh_la_OBJECTS = $(am__objects_32) $(am__objects_4) \ + sh/Gapply_reg_state.lo sh/Gcreate_addr_space.lo \ + sh/Gget_proc_info.lo sh/Gget_save_loc.lo sh/Gglobal.lo \ + sh/Ginit.lo sh/Ginit_local.lo sh/Ginit_remote.lo \ + sh/Gis_signal_frame.lo sh/Gregs.lo sh/Greg_states_iterate.lo \ + sh/Gresume.lo sh/Gstep.lo libunwind_sh_la_OBJECTS = $(am_libunwind_sh_la_OBJECTS) libunwind_sh_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_sh_la_LDFLAGS) $(LDFLAGS) \ -o $@ @ARCH_SH_TRUE@am_libunwind_sh_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_13 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@libunwind_tilegx_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@ libunwind-elfxx.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@ $(am__DEPENDENCIES_13) -am__libunwind_tilegx_la_SOURCES_DIST = os-freebsd.c os-hpux.c \ - os-linux.c dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ - mi/flush_cache.c mi/mempool.c mi/strerror.c tilegx/is_fpreg.c \ - tilegx/regname.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ - mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c tilegx/Gapply_reg_state.c \ - tilegx/Greg_states_iterate.c tilegx/Gcreate_addr_space.c \ - tilegx/Gget_proc_info.c tilegx/Gget_save_loc.c \ - tilegx/Gglobal.c tilegx/Ginit.c tilegx/Ginit_local.c \ - tilegx/Ginit_remote.c tilegx/Gis_signal_frame.c tilegx/Gregs.c \ - tilegx/Gresume.c tilegx/Gstep.c -am__objects_48 = $(am__objects_7) tilegx/is_fpreg.lo tilegx/regname.lo -am__objects_49 = $(am__objects_48) $(am__objects_9) \ - tilegx/Gapply_reg_state.lo tilegx/Greg_states_iterate.lo \ - tilegx/Gcreate_addr_space.lo tilegx/Gget_proc_info.lo \ - tilegx/Gget_save_loc.lo tilegx/Gglobal.lo tilegx/Ginit.lo \ - tilegx/Ginit_local.lo tilegx/Ginit_remote.lo \ - tilegx/Gis_signal_frame.lo tilegx/Gregs.lo tilegx/Gresume.lo \ - tilegx/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@am_libunwind_tilegx_la_OBJECTS = $(am__objects_49) -libunwind_tilegx_la_OBJECTS = $(am_libunwind_tilegx_la_OBJECTS) -libunwind_tilegx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(libunwind_tilegx_la_LDFLAGS) \ - $(LDFLAGS) -o $@ -@ARCH_TILEGX_TRUE@am_libunwind_tilegx_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_14 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@libunwind_x86_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@ $(am__DEPENDENCIES_14) +libunwind_x86_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf32.la $(am__DEPENDENCIES_2) am__libunwind_x86_la_SOURCES_DIST = os-freebsd.c os-hpux.c os-linux.c \ dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c x86/is_fpreg.c \ x86/regname.c x86/Gos-freebsd.c x86/Gos-linux.c \ + mi/Gaddress_validator.c mi/Gdestroy_addr_space.c \ mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c x86/Gapply_reg_state.c \ - x86/Greg_states_iterate.c x86/Gcreate_addr_space.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c x86/Gapply_reg_state.c \ + x86/Gcreate_addr_space.c x86/Gget_proc_info.c \ x86/Gget_save_loc.c x86/Gglobal.c x86/Ginit.c \ - x86/Ginit_local.c x86/Ginit_remote.c x86/Gget_proc_info.c \ - x86/Gregs.c x86/Gresume.c x86/Gstep.c -am__objects_50 = $(am__objects_7) x86/is_fpreg.lo x86/regname.lo -@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_51 = x86/Gos-linux.lo -@OS_FREEBSD_TRUE@am__objects_51 = x86/Gos-freebsd.lo -am__objects_52 = $(am__objects_50) $(am__objects_51) $(am__objects_9) \ - x86/Gapply_reg_state.lo x86/Greg_states_iterate.lo \ - x86/Gcreate_addr_space.lo x86/Gget_save_loc.lo x86/Gglobal.lo \ - x86/Ginit.lo x86/Ginit_local.lo x86/Ginit_remote.lo \ - x86/Gget_proc_info.lo x86/Gregs.lo x86/Gresume.lo x86/Gstep.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@am_libunwind_x86_la_OBJECTS = $(am__objects_52) + x86/Ginit_local.c x86/Ginit_remote.c x86/Gregs.c \ + x86/Greg_states_iterate.c x86/Gresume.c x86/Gstep.c +am__objects_33 = $(am__objects_2) x86/is_fpreg.lo x86/regname.lo +@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_34 = x86/Gos-linux.lo +@OS_FREEBSD_TRUE@am__objects_34 = x86/Gos-freebsd.lo +am_libunwind_x86_la_OBJECTS = $(am__objects_33) $(am__objects_34) \ + $(am__objects_4) x86/Gapply_reg_state.lo \ + x86/Gcreate_addr_space.lo x86/Gget_proc_info.lo \ + x86/Gget_save_loc.lo x86/Gglobal.lo x86/Ginit.lo \ + x86/Ginit_local.lo x86/Ginit_remote.lo x86/Gregs.lo \ + x86/Greg_states_iterate.lo x86/Gresume.lo x86/Gstep.lo libunwind_x86_la_OBJECTS = $(am_libunwind_x86_la_OBJECTS) libunwind_x86_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_x86_la_LDFLAGS) $(LDFLAGS) \ -o $@ @ARCH_X86_TRUE@am_libunwind_x86_la_rpath = -rpath $(libdir) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@@REMOTE_ONLY_FALSE@am__DEPENDENCIES_15 = libunwind.la -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@libunwind_x86_64_la_DEPENDENCIES = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@ $(am__DEPENDENCIES_15) +libunwind_x86_64_la_DEPENDENCIES = libunwind-dwarf-generic.la \ + libunwind-elf64.la $(am__DEPENDENCIES_2) am__libunwind_x86_64_la_SOURCES_DIST = os-freebsd.c os-hpux.c \ os-linux.c dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ mi/flush_cache.c mi/mempool.c mi/strerror.c x86_64/is_fpreg.c \ x86_64/regname.c x86_64/Gos-freebsd.c x86_64/Gos-linux.c \ - x86_64/Gos-solaris.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ + x86_64/Gos-qnx.c x86_64/Gos-solaris.c mi/Gaddress_validator.c \ + mi/Gdestroy_addr_space.c mi/Gdyn-extract.c mi/Gdyn-remote.c \ mi/Gfind_dynamic_proc_info.c mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c mi/Gput_dynamic_unwind_info.c \ - mi/Gdestroy_addr_space.c mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c x86_64/Gapply_reg_state.c \ - x86_64/Greg_states_iterate.c x86_64/Gcreate_addr_space.c \ + mi/Gget_fpreg.c mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ + mi/Gget_reg.c mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c mi/Gset_caching_policy.c mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c mi/Gset_reg.c \ + mi/Gget_elf_filename.c x86_64/Gapply_reg_state.c \ + x86_64/Gcreate_addr_space.c x86_64/Gget_proc_info.c \ x86_64/Gget_save_loc.c x86_64/Gglobal.c x86_64/Ginit.c \ - x86_64/Ginit_local.c x86_64/Ginit_remote.c \ - x86_64/Gget_proc_info.c x86_64/Gregs.c x86_64/Gresume.c \ + x86_64/Ginit_local.c x86_64/Ginit_remote.c x86_64/Gregs.c \ + x86_64/Greg_states_iterate.c x86_64/Gresume.c \ x86_64/Gstash_frame.c x86_64/Gstep.c x86_64/Gtrace.c -am__objects_53 = $(am__objects_7) x86_64/is_fpreg.lo x86_64/regname.lo -@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_SOLARIS_TRUE@am__objects_54 = x86_64/Gos-solaris.lo -@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_54 = x86_64/Gos-linux.lo -@OS_FREEBSD_TRUE@am__objects_54 = x86_64/Gos-freebsd.lo -am__objects_55 = $(am__objects_53) $(am__objects_54) $(am__objects_9) \ - x86_64/Gapply_reg_state.lo x86_64/Greg_states_iterate.lo \ - x86_64/Gcreate_addr_space.lo x86_64/Gget_save_loc.lo \ - x86_64/Gglobal.lo x86_64/Ginit.lo x86_64/Ginit_local.lo \ - x86_64/Ginit_remote.lo x86_64/Gget_proc_info.lo \ - x86_64/Gregs.lo x86_64/Gresume.lo x86_64/Gstash_frame.lo \ - x86_64/Gstep.lo x86_64/Gtrace.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@am_libunwind_x86_64_la_OBJECTS = $(am__objects_55) +am__objects_35 = $(am__objects_2) x86_64/is_fpreg.lo x86_64/regname.lo +@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_FALSE@@OS_SOLARIS_TRUE@am__objects_36 = x86_64/Gos-solaris.lo +@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_36 = x86_64/Gos-qnx.lo +@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_36 = x86_64/Gos-linux.lo +@OS_FREEBSD_TRUE@am__objects_36 = x86_64/Gos-freebsd.lo +am_libunwind_x86_64_la_OBJECTS = $(am__objects_35) $(am__objects_36) \ + $(am__objects_4) x86_64/Gapply_reg_state.lo \ + x86_64/Gcreate_addr_space.lo x86_64/Gget_proc_info.lo \ + x86_64/Gget_save_loc.lo x86_64/Gglobal.lo x86_64/Ginit.lo \ + x86_64/Ginit_local.lo x86_64/Ginit_remote.lo x86_64/Gregs.lo \ + x86_64/Greg_states_iterate.lo x86_64/Gresume.lo \ + x86_64/Gstash_frame.lo x86_64/Gstep.lo x86_64/Gtrace.lo libunwind_x86_64_la_OBJECTS = $(am_libunwind_x86_64_la_OBJECTS) libunwind_x86_64_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libunwind_x86_64_la_LDFLAGS) \ $(LDFLAGS) -o $@ @ARCH_X86_64_TRUE@am_libunwind_x86_64_la_rpath = -rpath $(libdir) -libunwind_la_DEPENDENCIES = $(am__append_25) $(LIBUNWIND_ELF) \ +libunwind_la_DEPENDENCIES = $(am__append_26) $(libunwind_elf_libs) \ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3) \ $(am__DEPENDENCIES_3) am__libunwind_la_SOURCES_DIST = os-freebsd.c os-hpux.c os-linux.c \ dl-iterate-phdr.c os-qnx.c os-solaris.c mi/init.c \ - mi/flush_cache.c mi/mempool.c mi/strerror.c s390x/is_fpreg.c \ - s390x/regname.c mi/_ReadULEB.c mi/_ReadSLEB.c mi/backtrace.c \ + mi/flush_cache.c mi/mempool.c mi/strerror.c aarch64/is_fpreg.c \ + aarch64/regname.c mi/_ReadULEB.c mi/_ReadSLEB.c mi/backtrace.c \ mi/dyn-cancel.c mi/dyn-info-list.c mi/dyn-register.c \ + mi/Laddress_validator.c mi/Ldestroy_addr_space.c \ mi/Ldyn-extract.c mi/Lfind_dynamic_proc_info.c \ - mi/Lget_accessors.c mi/Lget_proc_info_by_ip.c \ - mi/Lget_proc_name.c mi/Lget_proc_info_in_range.c \ - mi/Lput_dynamic_unwind_info.c mi/Ldestroy_addr_space.c \ - mi/Lget_reg.c mi/Lset_reg.c mi/Lget_fpreg.c mi/Lset_fpreg.c \ - mi/Lset_caching_policy.c mi/Lset_cache_size.c \ - unwind/Backtrace.c unwind/DeleteException.c \ - unwind/FindEnclosingFunction.c unwind/ForcedUnwind.c \ - unwind/GetBSP.c unwind/GetCFA.c unwind/GetDataRelBase.c \ - unwind/GetGR.c unwind/GetIP.c unwind/GetLanguageSpecificData.c \ + mi/Lget_accessors.c mi/Lget_fpreg.c mi/Lset_fpreg.c \ + mi/Lget_proc_info_by_ip.c mi/Lget_proc_name.c mi/Lget_reg.c \ + mi/Lput_dynamic_unwind_info.c mi/Lset_cache_size.c \ + mi/Lset_caching_policy.c mi/Lset_iterate_phdr_function.c \ + mi/Lset_reg.c mi/Lget_elf_filename.c unwind/Backtrace.c \ + unwind/DeleteException.c unwind/FindEnclosingFunction.c \ + unwind/ForcedUnwind.c unwind/GetBSP.c unwind/GetCFA.c \ + unwind/GetDataRelBase.c unwind/GetGR.c unwind/GetIP.c \ + unwind/GetIPInfo.c unwind/GetLanguageSpecificData.c \ unwind/GetRegionStart.c unwind/GetTextRelBase.c \ unwind/RaiseException.c unwind/Resume.c \ unwind/Resume_or_Rethrow.c unwind/SetGR.c unwind/SetIP.c \ - unwind/GetIPInfo.c s390x/Lapply_reg_state.c \ - s390x/Lreg_states_iterate.c s390x/Lcreate_addr_space.c \ - s390x/Lget_save_loc.c s390x/Lglobal.c s390x/Linit.c \ - s390x/Linit_local.c s390x/Linit_remote.c \ - s390x/Lget_proc_info.c s390x/Lregs.c s390x/Lresume.c \ - s390x/Lis_signal_frame.c s390x/Lstep.c s390x/getcontext.S \ - s390x/setcontext.S sh/is_fpreg.c sh/regname.c \ - sh/Lapply_reg_state.c sh/Lreg_states_iterate.c \ - sh/Lcreate_addr_space.c sh/Lget_proc_info.c sh/Lget_save_loc.c \ - sh/Lglobal.c sh/Linit.c sh/Linit_local.c sh/Linit_remote.c \ - sh/Lis_signal_frame.c sh/Lregs.c sh/Lresume.c sh/Lstep.c \ - ppc64/is_fpreg.c ppc64/regname.c ppc64/get_func_addr.c \ - ppc/Lget_proc_info.c ppc/Lget_save_loc.c ppc/Linit_local.c \ - ppc/Linit_remote.c ppc/Lis_signal_frame.c \ - ppc64/Lapply_reg_state.c ppc64/Lreg_states_iterate.c \ - ppc64/Lcreate_addr_space.c ppc64/Lglobal.c ppc64/Linit.c \ - ppc64/Lregs.c ppc64/Lresume.c ppc64/Lstep.c ppc32/is_fpreg.c \ - ppc32/regname.c ppc32/get_func_addr.c ppc32/Lapply_reg_state.c \ - ppc32/Lreg_states_iterate.c ppc32/Lcreate_addr_space.c \ - ppc32/Lglobal.c ppc32/Linit.c ppc32/Lregs.c ppc32/Lresume.c \ - ppc32/Lstep.c x86_64/is_fpreg.c x86_64/regname.c \ - x86_64/Los-freebsd.c x86_64/Los-linux.c x86_64/Los-solaris.c \ - x86_64/setcontext.S x86_64/Lapply_reg_state.c \ - x86_64/Lreg_states_iterate.c x86_64/Lcreate_addr_space.c \ - x86_64/Lget_save_loc.c x86_64/Lglobal.c x86_64/Linit.c \ - x86_64/Linit_local.c x86_64/Linit_remote.c \ - x86_64/Lget_proc_info.c x86_64/Lregs.c x86_64/Lresume.c \ - x86_64/Lstash_frame.c x86_64/Lstep.c x86_64/Ltrace.c \ - x86_64/getcontext.S x86/is_fpreg.c x86/regname.c \ - x86/Los-freebsd.c x86/Los-linux.c x86/Lapply_reg_state.c \ - x86/Lreg_states_iterate.c x86/Lcreate_addr_space.c \ - x86/Lget_save_loc.c x86/Lglobal.c x86/Linit.c \ - x86/Linit_local.c x86/Linit_remote.c x86/Lget_proc_info.c \ - x86/Lregs.c x86/Lresume.c x86/Lstep.c x86/getcontext-freebsd.S \ - x86/getcontext-linux.S loongarch64/is_fpreg.c \ - loongarch64/regname.c loongarch64/getcontext.S \ - loongarch64/Lapply_reg_state.c \ - loongarch64/Lreg_states_iterate.c \ + aarch64/Los-freebsd.c aarch64/setcontext.S aarch64/Los-linux.c \ + aarch64/Los-qnx.c aarch64/getcontext.S \ + aarch64/Lapply_reg_state.c aarch64/Lcreate_addr_space.c \ + aarch64/Lget_proc_info.c aarch64/Lget_save_loc.c \ + aarch64/Lglobal.c aarch64/Linit.c aarch64/Linit_local.c \ + aarch64/Linit_remote.c aarch64/Lis_signal_frame.c \ + aarch64/Lregs.c aarch64/Lreg_states_iterate.c \ + aarch64/Lresume.c aarch64/Lstash_frame.c aarch64/Lstep.c \ + aarch64/Ltrace.c arm/is_fpreg.c arm/regname.c \ + arm/Los-freebsd.c arm/Los-linux.c arm/Los-other.c \ + arm/getcontext.S arm/Lapply_reg_state.c \ + arm/Lcreate_addr_space.c arm/Lex_tables.c arm/Lget_proc_info.c \ + arm/Lget_save_loc.c arm/Lglobal.c arm/Linit.c \ + arm/Linit_local.c arm/Linit_remote.c arm/Lregs.c \ + arm/Lreg_states_iterate.c arm/Lresume.c arm/Lstash_frame.c \ + arm/Lstep.c arm/Ltrace.c hppa/regname.c hppa/getcontext.S \ + hppa/Lapply_reg_state.c hppa/Lcreate_addr_space.c \ + hppa/Lget_proc_info.c hppa/Lget_save_loc.c hppa/Lglobal.c \ + hppa/Linit.c hppa/Linit_local.c hppa/Linit_remote.c \ + hppa/Lis_signal_frame.c hppa/Lregs.c \ + hppa/Lreg_states_iterate.c hppa/Lresume.c hppa/Lstep.c \ + hppa/setcontext.S ia64/regname.c ia64/dyn_info_list.S \ + ia64/getcontext.S ia64/Lapply_reg_state.c \ + ia64/Lcreate_addr_space.c ia64/Lfind_unwind_table.c \ + ia64/Lget_proc_info.c ia64/Lget_save_loc.c ia64/Lglobal.c \ + ia64/Linit.c ia64/Linit_local.c ia64/Linit_remote.c \ + ia64/Linstall_cursor.S ia64/Lis_signal_frame.c ia64/Lparser.c \ + ia64/Lrbs.c ia64/Lregs.c ia64/Lreg_states_iterate.c \ + ia64/Lresume.c ia64/Lscript.c ia64/Lstep.c ia64/Ltables.c \ + loongarch64/is_fpreg.c loongarch64/regname.c \ + loongarch64/getcontext.S loongarch64/Lapply_reg_state.c \ loongarch64/Lcreate_addr_space.c loongarch64/Lget_proc_info.c \ loongarch64/Lget_save_loc.c loongarch64/Lglobal.c \ loongarch64/Linit.c loongarch64/Linit_local.c \ loongarch64/Linit_remote.c loongarch64/Lis_signal_frame.c \ - loongarch64/Lregs.c loongarch64/Lresume.c loongarch64/Lstep.c \ + loongarch64/Lregs.c loongarch64/Lreg_states_iterate.c \ + loongarch64/Lresume.c loongarch64/Lstep.c mips/is_fpreg.c \ + mips/regname.c mips/getcontext.S mips/Lapply_reg_state.c \ + mips/Lcreate_addr_space.c mips/Lget_proc_info.c \ + mips/Lget_save_loc.c mips/Lglobal.c mips/Linit.c \ + mips/Linit_local.c mips/Linit_remote.c mips/Lis_signal_frame.c \ + mips/Lregs.c mips/Lreg_states_iterate.c mips/Lresume.c \ + mips/Lstep.c ppc32/get_func_addr.c ppc32/is_fpreg.c \ + ppc32/regname.c ppc/Lget_proc_info.c ppc/Lget_save_loc.c \ + ppc/Linit_local.c ppc/Linit_remote.c ppc/Lis_signal_frame.c \ + ppc32/Lapply_reg_state.c ppc32/Lcreate_addr_space.c \ + ppc32/Lglobal.c ppc32/Linit.c ppc32/Lregs.c \ + ppc32/Lreg_states_iterate.c ppc32/Lresume.c ppc32/Lstep.c \ + ppc64/get_func_addr.c ppc64/is_fpreg.c ppc64/regname.c \ + ppc64/Lapply_reg_state.c ppc64/Lcreate_addr_space.c \ + ppc64/Lglobal.c ppc64/Linit.c ppc64/Lregs.c \ + ppc64/Lreg_states_iterate.c ppc64/Lresume.c ppc64/Lstep.c \ riscv/is_fpreg.c riscv/regname.c riscv/getcontext.S \ - riscv/setcontext.S riscv/Lapply_reg_state.c \ - riscv/Lreg_states_iterate.c riscv/Lcreate_addr_space.c \ + riscv/Lapply_reg_state.c riscv/Lcreate_addr_space.c \ riscv/Lget_proc_info.c riscv/Lget_save_loc.c riscv/Lglobal.c \ riscv/Linit.c riscv/Linit_local.c riscv/Linit_remote.c \ - riscv/Lis_signal_frame.c riscv/Lregs.c riscv/Lresume.c \ - riscv/Lstep.c tilegx/is_fpreg.c tilegx/regname.c \ - tilegx/getcontext.S tilegx/Lapply_reg_state.c \ - tilegx/Lreg_states_iterate.c tilegx/Lcreate_addr_space.c \ - tilegx/Lget_proc_info.c tilegx/Lget_save_loc.c \ - tilegx/Lglobal.c tilegx/Linit.c tilegx/Linit_local.c \ - tilegx/Linit_remote.c tilegx/Lis_signal_frame.c tilegx/Lregs.c \ - tilegx/Lresume.c tilegx/Lstep.c mips/is_fpreg.c mips/regname.c \ - mips/getcontext.S mips/Lapply_reg_state.c \ - mips/Lreg_states_iterate.c mips/Lcreate_addr_space.c \ - mips/Lget_proc_info.c mips/Lget_save_loc.c mips/Lglobal.c \ - mips/Linit.c mips/Linit_local.c mips/Linit_remote.c \ - mips/Lis_signal_frame.c mips/Lregs.c mips/Lresume.c \ - mips/Lstep.c hppa/regname.c hppa/getcontext.S \ - hppa/setcontext.S hppa/Lapply_reg_state.c \ - hppa/Lreg_states_iterate.c hppa/Lcreate_addr_space.c \ - hppa/Lget_save_loc.c hppa/Lglobal.c hppa/Linit.c \ - hppa/Linit_local.c hppa/Linit_remote.c hppa/Lis_signal_frame.c \ - hppa/Lget_proc_info.c hppa/Lregs.c hppa/Lresume.c hppa/Lstep.c \ - ia64/regname.c ia64/dyn_info_list.S ia64/getcontext.S \ - ia64/Lapply_reg_state.c ia64/Lreg_states_iterate.c \ - ia64/Lcreate_addr_space.c ia64/Lget_proc_info.c \ - ia64/Lget_save_loc.c ia64/Lglobal.c ia64/Linit.c \ - ia64/Linit_local.c ia64/Linit_remote.c ia64/Linstall_cursor.S \ - ia64/Lis_signal_frame.c ia64/Lparser.c ia64/Lrbs.c \ - ia64/Lregs.c ia64/Lresume.c ia64/Lscript.c ia64/Lstep.c \ - ia64/Ltables.c ia64/Lfind_unwind_table.c arm/is_fpreg.c \ - arm/regname.c arm/Los-freebsd.c arm/Los-linux.c \ - arm/Los-other.c arm/getcontext.S arm/Lapply_reg_state.c \ - arm/Lreg_states_iterate.c arm/Lcreate_addr_space.c \ - arm/Lget_proc_info.c arm/Lget_save_loc.c arm/Lglobal.c \ - arm/Linit.c arm/Linit_local.c arm/Linit_remote.c arm/Lregs.c \ - arm/Lresume.c arm/Lstep.c arm/Lex_tables.c arm/Lstash_frame.c \ - arm/Ltrace.c aarch64/is_fpreg.c aarch64/regname.c \ - aarch64/Lapply_reg_state.c aarch64/Lreg_states_iterate.c \ - aarch64/Lcreate_addr_space.c aarch64/Lget_proc_info.c \ - aarch64/Lget_save_loc.c aarch64/Lglobal.c aarch64/Linit.c \ - aarch64/Linit_local.c aarch64/Linit_remote.c \ - aarch64/Lis_signal_frame.c aarch64/Lregs.c aarch64/Lresume.c \ - aarch64/Lstash_frame.c aarch64/Lstep.c aarch64/Ltrace.c \ - aarch64/getcontext.S -@SUPPORT_CXX_EXCEPTIONS_TRUE@am__objects_56 = mi/_ReadULEB.lo \ + riscv/Lis_signal_frame.c riscv/Lregs.c \ + riscv/Lreg_states_iterate.c riscv/Lresume.c riscv/Lstep.c \ + riscv/setcontext.S s390x/is_fpreg.c s390x/regname.c \ + s390x/getcontext.S s390x/Lapply_reg_state.c \ + s390x/Lcreate_addr_space.c s390x/Lget_proc_info.c \ + s390x/Lget_save_loc.c s390x/Lglobal.c s390x/Linit.c \ + s390x/Linit_local.c s390x/Linit_remote.c \ + s390x/Lis_signal_frame.c s390x/Lregs.c \ + s390x/Lreg_states_iterate.c s390x/Lresume.c s390x/Lstep.c \ + s390x/setcontext.S sh/is_fpreg.c sh/regname.c \ + sh/Lapply_reg_state.c sh/Lcreate_addr_space.c \ + sh/Lget_proc_info.c sh/Lget_save_loc.c sh/Lglobal.c sh/Linit.c \ + sh/Linit_local.c sh/Linit_remote.c sh/Lis_signal_frame.c \ + sh/Lregs.c sh/Lreg_states_iterate.c sh/Lresume.c sh/Lstep.c \ + x86_64/is_fpreg.c x86_64/regname.c x86_64/Los-freebsd.c \ + x86_64/Los-linux.c x86_64/Los-qnx.c x86_64/Los-solaris.c \ + x86_64/getcontext.S x86_64/Lapply_reg_state.c \ + x86_64/Lcreate_addr_space.c x86_64/Lget_proc_info.c \ + x86_64/Lget_save_loc.c x86_64/Lglobal.c x86_64/Linit.c \ + x86_64/Linit_local.c x86_64/Linit_remote.c x86_64/Lregs.c \ + x86_64/Lreg_states_iterate.c x86_64/Lresume.c \ + x86_64/Lstash_frame.c x86_64/Lstep.c x86_64/Ltrace.c \ + x86_64/setcontext.S x86/is_fpreg.c x86/regname.c \ + x86/Los-freebsd.c x86/getcontext-freebsd.S x86/Los-linux.c \ + x86/getcontext-linux.S x86/Lapply_reg_state.c \ + x86/Lcreate_addr_space.c x86/Lget_proc_info.c \ + x86/Lget_save_loc.c x86/Lglobal.c x86/Linit.c \ + x86/Linit_local.c x86/Linit_remote.c x86/Lregs.c \ + x86/Lreg_states_iterate.c x86/Lresume.c x86/Lstep.c +@SUPPORT_CXX_EXCEPTIONS_TRUE@am__objects_37 = mi/_ReadULEB.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ mi/_ReadSLEB.lo -@OS_LINUX_TRUE@am__objects_57 = $(am__objects_56) -am__objects_58 = $(am__objects_57) mi/backtrace.lo mi/dyn-cancel.lo \ - mi/dyn-info-list.lo mi/dyn-register.lo mi/Ldyn-extract.lo \ - mi/Lfind_dynamic_proc_info.lo mi/Lget_accessors.lo \ - mi/Lget_proc_info_by_ip.lo mi/Lget_proc_name.lo \ - mi/Lget_proc_info_in_range.lo mi/Lput_dynamic_unwind_info.lo \ - mi/Ldestroy_addr_space.lo mi/Lget_reg.lo mi/Lset_reg.lo \ - mi/Lget_fpreg.lo mi/Lset_fpreg.lo mi/Lset_caching_policy.lo \ - mi/Lset_cache_size.lo -@SUPPORT_CXX_EXCEPTIONS_TRUE@am__objects_59 = unwind/Backtrace.lo \ +@OS_LINUX_TRUE@am__objects_38 = $(am__objects_37) +am__objects_39 = $(am__objects_38) mi/backtrace.lo mi/dyn-cancel.lo \ + mi/dyn-info-list.lo mi/dyn-register.lo \ + mi/Laddress_validator.lo mi/Ldestroy_addr_space.lo \ + mi/Ldyn-extract.lo mi/Lfind_dynamic_proc_info.lo \ + mi/Lget_accessors.lo mi/Lget_fpreg.lo mi/Lset_fpreg.lo \ + mi/Lget_proc_info_by_ip.lo mi/Lget_proc_name.lo mi/Lget_reg.lo \ + mi/Lput_dynamic_unwind_info.lo mi/Lset_cache_size.lo \ + mi/Lset_caching_policy.lo mi/Lset_iterate_phdr_function.lo \ + mi/Lset_reg.lo mi/Lget_elf_filename.lo +@SUPPORT_CXX_EXCEPTIONS_TRUE@am__objects_40 = unwind/Backtrace.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/DeleteException.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/FindEnclosingFunction.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/ForcedUnwind.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetBSP.lo unwind/GetCFA.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetDataRelBase.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetGR.lo unwind/GetIP.lo \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetIPInfo.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetLanguageSpecificData.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetRegionStart.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetTextRelBase.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/RaiseException.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/Resume.lo \ @SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/Resume_or_Rethrow.lo \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/SetGR.lo unwind/SetIP.lo \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetIPInfo.lo -am__objects_60 = $(am__objects_58) $(am__objects_59) -am__objects_61 = $(am__objects_31) $(am__objects_60) \ - s390x/Lapply_reg_state.lo s390x/Lreg_states_iterate.lo \ - s390x/Lcreate_addr_space.lo s390x/Lget_save_loc.lo \ - s390x/Lglobal.lo s390x/Linit.lo s390x/Linit_local.lo \ - s390x/Linit_remote.lo s390x/Lget_proc_info.lo s390x/Lregs.lo \ - s390x/Lresume.lo s390x/Lis_signal_frame.lo s390x/Lstep.lo \ - s390x/getcontext.lo s390x/setcontext.lo -am__objects_62 = $(am__objects_46) $(am__objects_60) \ - sh/Lapply_reg_state.lo sh/Lreg_states_iterate.lo \ - sh/Lcreate_addr_space.lo sh/Lget_proc_info.lo \ - sh/Lget_save_loc.lo sh/Lglobal.lo sh/Linit.lo \ - sh/Linit_local.lo sh/Linit_remote.lo sh/Lis_signal_frame.lo \ - sh/Lregs.lo sh/Lresume.lo sh/Lstep.lo -am__objects_63 = ppc/Lget_proc_info.lo ppc/Lget_save_loc.lo \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/SetGR.lo unwind/SetIP.lo +am__objects_41 = $(am__objects_39) $(am__objects_40) +@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_42 = aarch64/Los-qnx.lo +@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_42 = \ +@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@ aarch64/Los-linux.lo +@OS_FREEBSD_TRUE@am__objects_42 = aarch64/Los-freebsd.lo \ +@OS_FREEBSD_TRUE@ aarch64/setcontext.lo +@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_43 = arm/Los-other.lo +@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_43 = arm/Los-linux.lo +@OS_FREEBSD_TRUE@am__objects_43 = arm/Los-freebsd.lo +am__objects_44 = ppc/Lget_proc_info.lo ppc/Lget_save_loc.lo \ ppc/Linit_local.lo ppc/Linit_remote.lo ppc/Lis_signal_frame.lo -am__objects_64 = $(am__objects_27) $(am__objects_60) $(am__objects_63) \ - ppc64/Lapply_reg_state.lo ppc64/Lreg_states_iterate.lo \ - ppc64/Lcreate_addr_space.lo ppc64/Lglobal.lo ppc64/Linit.lo \ - ppc64/Lregs.lo ppc64/Lresume.lo ppc64/Lstep.lo -am__objects_65 = $(am__objects_24) $(am__objects_60) $(am__objects_63) \ - ppc32/Lapply_reg_state.lo ppc32/Lreg_states_iterate.lo \ - ppc32/Lcreate_addr_space.lo ppc32/Lglobal.lo ppc32/Linit.lo \ - ppc32/Lregs.lo ppc32/Lresume.lo ppc32/Lstep.lo -@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_SOLARIS_TRUE@am__objects_66 = x86_64/Los-solaris.lo -@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_66 = x86_64/Los-linux.lo -@OS_FREEBSD_TRUE@am__objects_66 = x86_64/Los-freebsd.lo -am__objects_67 = $(am__objects_53) $(am__objects_66) $(am__objects_60) \ - x86_64/setcontext.lo x86_64/Lapply_reg_state.lo \ - x86_64/Lreg_states_iterate.lo x86_64/Lcreate_addr_space.lo \ - x86_64/Lget_save_loc.lo x86_64/Lglobal.lo x86_64/Linit.lo \ - x86_64/Linit_local.lo x86_64/Linit_remote.lo \ - x86_64/Lget_proc_info.lo x86_64/Lregs.lo x86_64/Lresume.lo \ - x86_64/Lstash_frame.lo x86_64/Lstep.lo x86_64/Ltrace.lo \ - x86_64/getcontext.lo -@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_68 = x86/Los-linux.lo -@OS_FREEBSD_TRUE@am__objects_68 = x86/Los-freebsd.lo -am__objects_69 = $(am__objects_50) $(am__objects_68) $(am__objects_60) \ - x86/Lapply_reg_state.lo x86/Lreg_states_iterate.lo \ - x86/Lcreate_addr_space.lo x86/Lget_save_loc.lo x86/Lglobal.lo \ - x86/Linit.lo x86/Linit_local.lo x86/Linit_remote.lo \ - x86/Lget_proc_info.lo x86/Lregs.lo x86/Lresume.lo x86/Lstep.lo -@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_70 = \ +@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_FALSE@@OS_SOLARIS_TRUE@am__objects_45 = x86_64/Los-solaris.lo +@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_45 = x86_64/Los-qnx.lo +@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_45 = x86_64/Los-linux.lo +@OS_FREEBSD_TRUE@am__objects_45 = x86_64/Los-freebsd.lo +@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_46 = x86/Los-linux.lo \ @OS_FREEBSD_FALSE@@OS_LINUX_TRUE@ x86/getcontext-linux.lo -@OS_FREEBSD_TRUE@am__objects_70 = x86/getcontext-freebsd.lo -am__objects_71 = $(am__objects_20) $(am__objects_60) \ - loongarch64/getcontext.lo loongarch64/Lapply_reg_state.lo \ - loongarch64/Lreg_states_iterate.lo \ - loongarch64/Lcreate_addr_space.lo \ - loongarch64/Lget_proc_info.lo loongarch64/Lget_save_loc.lo \ - loongarch64/Lglobal.lo loongarch64/Linit.lo \ - loongarch64/Linit_local.lo loongarch64/Linit_remote.lo \ - loongarch64/Lis_signal_frame.lo loongarch64/Lregs.lo \ - loongarch64/Lresume.lo loongarch64/Lstep.lo -am__objects_72 = $(am__objects_29) $(am__objects_60) \ - riscv/getcontext.lo riscv/setcontext.lo \ - riscv/Lapply_reg_state.lo riscv/Lreg_states_iterate.lo \ - riscv/Lcreate_addr_space.lo riscv/Lget_proc_info.lo \ - riscv/Lget_save_loc.lo riscv/Lglobal.lo riscv/Linit.lo \ - riscv/Linit_local.lo riscv/Linit_remote.lo \ - riscv/Lis_signal_frame.lo riscv/Lregs.lo riscv/Lresume.lo \ - riscv/Lstep.lo -am__objects_73 = $(am__objects_48) $(am__objects_60) \ - tilegx/getcontext.lo tilegx/Lapply_reg_state.lo \ - tilegx/Lreg_states_iterate.lo tilegx/Lcreate_addr_space.lo \ - tilegx/Lget_proc_info.lo tilegx/Lget_save_loc.lo \ - tilegx/Lglobal.lo tilegx/Linit.lo tilegx/Linit_local.lo \ - tilegx/Linit_remote.lo tilegx/Lis_signal_frame.lo \ - tilegx/Lregs.lo tilegx/Lresume.lo tilegx/Lstep.lo -am__objects_74 = $(am__objects_22) $(am__objects_60) \ - mips/getcontext.lo mips/Lapply_reg_state.lo \ - mips/Lreg_states_iterate.lo mips/Lcreate_addr_space.lo \ - mips/Lget_proc_info.lo mips/Lget_save_loc.lo mips/Lglobal.lo \ - mips/Linit.lo mips/Linit_local.lo mips/Linit_remote.lo \ - mips/Lis_signal_frame.lo mips/Lregs.lo mips/Lresume.lo \ - mips/Lstep.lo -am__objects_75 = $(am__objects_16) $(am__objects_60) \ - hppa/getcontext.lo hppa/setcontext.lo hppa/Lapply_reg_state.lo \ - hppa/Lreg_states_iterate.lo hppa/Lcreate_addr_space.lo \ - hppa/Lget_save_loc.lo hppa/Lglobal.lo hppa/Linit.lo \ - hppa/Linit_local.lo hppa/Linit_remote.lo \ - hppa/Lis_signal_frame.lo hppa/Lget_proc_info.lo hppa/Lregs.lo \ - hppa/Lresume.lo hppa/Lstep.lo -am__objects_76 = $(am__objects_18) $(am__objects_60) \ - ia64/dyn_info_list.lo ia64/getcontext.lo \ - ia64/Lapply_reg_state.lo ia64/Lreg_states_iterate.lo \ - ia64/Lcreate_addr_space.lo ia64/Lget_proc_info.lo \ - ia64/Lget_save_loc.lo ia64/Lglobal.lo ia64/Linit.lo \ - ia64/Linit_local.lo ia64/Linit_remote.lo \ - ia64/Linstall_cursor.lo ia64/Lis_signal_frame.lo \ - ia64/Lparser.lo ia64/Lrbs.lo ia64/Lregs.lo ia64/Lresume.lo \ - ia64/Lscript.lo ia64/Lstep.lo ia64/Ltables.lo \ - ia64/Lfind_unwind_table.lo -@OS_FREEBSD_FALSE@@OS_LINUX_FALSE@@OS_QNX_TRUE@am__objects_77 = arm/Los-other.lo -@OS_FREEBSD_FALSE@@OS_LINUX_TRUE@am__objects_77 = arm/Los-linux.lo -@OS_FREEBSD_TRUE@am__objects_77 = arm/Los-freebsd.lo -am__objects_78 = $(am__objects_11) $(am__objects_77) $(am__objects_60) \ - arm/getcontext.lo arm/Lapply_reg_state.lo \ - arm/Lreg_states_iterate.lo arm/Lcreate_addr_space.lo \ - arm/Lget_proc_info.lo arm/Lget_save_loc.lo arm/Lglobal.lo \ - arm/Linit.lo arm/Linit_local.lo arm/Linit_remote.lo \ - arm/Lregs.lo arm/Lresume.lo arm/Lstep.lo arm/Lex_tables.lo \ - arm/Lstash_frame.lo arm/Ltrace.lo -am__objects_79 = $(am__objects_8) $(am__objects_60) \ - aarch64/Lapply_reg_state.lo aarch64/Lreg_states_iterate.lo \ - aarch64/Lcreate_addr_space.lo aarch64/Lget_proc_info.lo \ - aarch64/Lget_save_loc.lo aarch64/Lglobal.lo aarch64/Linit.lo \ - aarch64/Linit_local.lo aarch64/Linit_remote.lo \ - aarch64/Lis_signal_frame.lo aarch64/Lregs.lo \ - aarch64/Lresume.lo aarch64/Lstash_frame.lo aarch64/Lstep.lo \ - aarch64/Ltrace.lo aarch64/getcontext.lo -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am_libunwind_la_OBJECTS = $(am__objects_61) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am_libunwind_la_OBJECTS = $(am__objects_62) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am_libunwind_la_OBJECTS = $(am__objects_64) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@am_libunwind_la_OBJECTS = $(am__objects_65) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@am_libunwind_la_OBJECTS = $(am__objects_67) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@am_libunwind_la_OBJECTS = $(am__objects_69) \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@ $(am__objects_70) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@am_libunwind_la_OBJECTS = $(am__objects_71) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@am_libunwind_la_OBJECTS = $(am__objects_72) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@am_libunwind_la_OBJECTS = $(am__objects_73) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@am_libunwind_la_OBJECTS = $(am__objects_74) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@am_libunwind_la_OBJECTS = $(am__objects_75) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@am_libunwind_la_OBJECTS = $(am__objects_76) +@OS_FREEBSD_TRUE@am__objects_46 = x86/Los-freebsd.lo \ +@OS_FREEBSD_TRUE@ x86/getcontext-freebsd.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@am_libunwind_la_OBJECTS = $(am__objects_33) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ $(am__objects_46) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_TRUE@ x86/Lstep.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@am_libunwind_la_OBJECTS = $(am__objects_35) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ $(am__objects_45) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/getcontext.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lstash_frame.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Lstep.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/Ltrace.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_FALSE@@ARCH_X86_64_TRUE@ x86_64/setcontext.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@am_libunwind_la_OBJECTS = $(am__objects_32) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lis_signal_frame.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_FALSE@@ARCH_SH_TRUE@ sh/Lstep.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@am_libunwind_la_OBJECTS = $(am__objects_19) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/getcontext.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lis_signal_frame.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/Lstep.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@ s390x/setcontext.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@am_libunwind_la_OBJECTS = $(am__objects_18) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/getcontext.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lis_signal_frame.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/Lstep.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_TRUE@ riscv/setcontext.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@am_libunwind_la_OBJECTS = $(am__objects_17) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ $(am__objects_44) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ ppc64/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ ppc64/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ ppc64/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ ppc64/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ ppc64/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ ppc64/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ ppc64/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@ ppc64/Lstep.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@am_libunwind_la_OBJECTS = $(am__objects_15) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ $(am__objects_44) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ ppc32/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ ppc32/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ ppc32/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ ppc32/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ ppc32/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ ppc32/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ ppc32/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@ ppc32/Lstep.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@am_libunwind_la_OBJECTS = $(am__objects_14) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/getcontext.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lis_signal_frame.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_TRUE@ mips/Lstep.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@am_libunwind_la_OBJECTS = $(am__objects_13) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/getcontext.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lis_signal_frame.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@ loongarch64/Lstep.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@am_libunwind_la_OBJECTS = $(am__objects_12) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/dyn_info_list.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/getcontext.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lfind_unwind_table.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Linstall_cursor.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lis_signal_frame.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lparser.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lrbs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lscript.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Lstep.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_TRUE@ ia64/Ltables.lo +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@am_libunwind_la_OBJECTS = $(am__objects_11) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/getcontext.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lglobal.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lis_signal_frame.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/Lstep.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@ hppa/setcontext.lo @ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@am_libunwind_la_OBJECTS = \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ $(am__objects_78) -@ARCH_AARCH64_TRUE@am_libunwind_la_OBJECTS = $(am__objects_79) +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ $(am__objects_6) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ $(am__objects_43) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ $(am__objects_41) \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/getcontext.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lapply_reg_state.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lcreate_addr_space.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lex_tables.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lget_proc_info.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lget_save_loc.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lglobal.lo arm/Linit.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Linit_local.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Linit_remote.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lregs.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lreg_states_iterate.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lresume.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lstash_frame.lo \ +@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ arm/Lstep.lo arm/Ltrace.lo +@ARCH_AARCH64_TRUE@am_libunwind_la_OBJECTS = $(am__objects_3) \ +@ARCH_AARCH64_TRUE@ $(am__objects_41) $(am__objects_42) \ +@ARCH_AARCH64_TRUE@ aarch64/getcontext.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Lapply_reg_state.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Lcreate_addr_space.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Lget_proc_info.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Lget_save_loc.lo aarch64/Lglobal.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Linit.lo aarch64/Linit_local.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Linit_remote.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Lis_signal_frame.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Lregs.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Lreg_states_iterate.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Lresume.lo aarch64/Lstash_frame.lo \ +@ARCH_AARCH64_TRUE@ aarch64/Lstep.lo aarch64/Ltrace.lo libunwind_la_OBJECTS = $(am_libunwind_la_OBJECTS) libunwind_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ @@ -1119,11 +1212,419 @@ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/dl-iterate-phdr.Plo \ + ./$(DEPDIR)/elf32.Plo ./$(DEPDIR)/elf64.Plo \ + ./$(DEPDIR)/elfxx.Plo ./$(DEPDIR)/os-freebsd.Plo \ + ./$(DEPDIR)/os-hpux.Plo ./$(DEPDIR)/os-linux.Plo \ + ./$(DEPDIR)/os-qnx.Plo ./$(DEPDIR)/os-solaris.Plo \ + aarch64/$(DEPDIR)/Gapply_reg_state.Plo \ + aarch64/$(DEPDIR)/Gcreate_addr_space.Plo \ + aarch64/$(DEPDIR)/Gget_proc_info.Plo \ + aarch64/$(DEPDIR)/Gget_save_loc.Plo \ + aarch64/$(DEPDIR)/Gglobal.Plo aarch64/$(DEPDIR)/Ginit.Plo \ + aarch64/$(DEPDIR)/Ginit_local.Plo \ + aarch64/$(DEPDIR)/Ginit_remote.Plo \ + aarch64/$(DEPDIR)/Gis_signal_frame.Plo \ + aarch64/$(DEPDIR)/Gos-freebsd.Plo \ + aarch64/$(DEPDIR)/Gos-linux.Plo aarch64/$(DEPDIR)/Gos-qnx.Plo \ + aarch64/$(DEPDIR)/Greg_states_iterate.Plo \ + aarch64/$(DEPDIR)/Gregs.Plo aarch64/$(DEPDIR)/Gresume.Plo \ + aarch64/$(DEPDIR)/Gstash_frame.Plo aarch64/$(DEPDIR)/Gstep.Plo \ + aarch64/$(DEPDIR)/Gtrace.Plo \ + aarch64/$(DEPDIR)/Lapply_reg_state.Plo \ + aarch64/$(DEPDIR)/Lcreate_addr_space.Plo \ + aarch64/$(DEPDIR)/Lget_proc_info.Plo \ + aarch64/$(DEPDIR)/Lget_save_loc.Plo \ + aarch64/$(DEPDIR)/Lglobal.Plo aarch64/$(DEPDIR)/Linit.Plo \ + aarch64/$(DEPDIR)/Linit_local.Plo \ + aarch64/$(DEPDIR)/Linit_remote.Plo \ + aarch64/$(DEPDIR)/Lis_signal_frame.Plo \ + aarch64/$(DEPDIR)/Los-freebsd.Plo \ + aarch64/$(DEPDIR)/Los-linux.Plo aarch64/$(DEPDIR)/Los-qnx.Plo \ + aarch64/$(DEPDIR)/Lreg_states_iterate.Plo \ + aarch64/$(DEPDIR)/Lregs.Plo aarch64/$(DEPDIR)/Lresume.Plo \ + aarch64/$(DEPDIR)/Lstash_frame.Plo aarch64/$(DEPDIR)/Lstep.Plo \ + aarch64/$(DEPDIR)/Ltrace.Plo aarch64/$(DEPDIR)/getcontext.Plo \ + aarch64/$(DEPDIR)/is_fpreg.Plo aarch64/$(DEPDIR)/longjmp.Plo \ + aarch64/$(DEPDIR)/regname.Plo aarch64/$(DEPDIR)/setcontext.Plo \ + aarch64/$(DEPDIR)/siglongjmp.Plo \ + arm/$(DEPDIR)/Gapply_reg_state.Plo \ + arm/$(DEPDIR)/Gcreate_addr_space.Plo \ + arm/$(DEPDIR)/Gex_tables.Plo arm/$(DEPDIR)/Gget_proc_info.Plo \ + arm/$(DEPDIR)/Gget_save_loc.Plo arm/$(DEPDIR)/Gglobal.Plo \ + arm/$(DEPDIR)/Ginit.Plo arm/$(DEPDIR)/Ginit_local.Plo \ + arm/$(DEPDIR)/Ginit_remote.Plo arm/$(DEPDIR)/Gos-freebsd.Plo \ + arm/$(DEPDIR)/Gos-linux.Plo arm/$(DEPDIR)/Gos-other.Plo \ + arm/$(DEPDIR)/Greg_states_iterate.Plo arm/$(DEPDIR)/Gregs.Plo \ + arm/$(DEPDIR)/Gresume.Plo arm/$(DEPDIR)/Gstash_frame.Plo \ + arm/$(DEPDIR)/Gstep.Plo arm/$(DEPDIR)/Gtrace.Plo \ + arm/$(DEPDIR)/Lapply_reg_state.Plo \ + arm/$(DEPDIR)/Lcreate_addr_space.Plo \ + arm/$(DEPDIR)/Lex_tables.Plo arm/$(DEPDIR)/Lget_proc_info.Plo \ + arm/$(DEPDIR)/Lget_save_loc.Plo arm/$(DEPDIR)/Lglobal.Plo \ + arm/$(DEPDIR)/Linit.Plo arm/$(DEPDIR)/Linit_local.Plo \ + arm/$(DEPDIR)/Linit_remote.Plo arm/$(DEPDIR)/Los-freebsd.Plo \ + arm/$(DEPDIR)/Los-linux.Plo arm/$(DEPDIR)/Los-other.Plo \ + arm/$(DEPDIR)/Lreg_states_iterate.Plo arm/$(DEPDIR)/Lregs.Plo \ + arm/$(DEPDIR)/Lresume.Plo arm/$(DEPDIR)/Lstash_frame.Plo \ + arm/$(DEPDIR)/Lstep.Plo arm/$(DEPDIR)/Ltrace.Plo \ + arm/$(DEPDIR)/getcontext.Plo arm/$(DEPDIR)/is_fpreg.Plo \ + arm/$(DEPDIR)/regname.Plo arm/$(DEPDIR)/siglongjmp.Plo \ + coredump/$(DEPDIR)/_UCD_access_mem.Plo \ + coredump/$(DEPDIR)/_UCD_access_reg_freebsd.Plo \ + coredump/$(DEPDIR)/_UCD_access_reg_linux.Plo \ + coredump/$(DEPDIR)/_UCD_access_reg_qnx.Plo \ + coredump/$(DEPDIR)/_UCD_accessors.Plo \ + coredump/$(DEPDIR)/_UCD_corefile_elf.Plo \ + coredump/$(DEPDIR)/_UCD_create.Plo \ + coredump/$(DEPDIR)/_UCD_destroy.Plo \ + coredump/$(DEPDIR)/_UCD_elf_map_image.Plo \ + coredump/$(DEPDIR)/_UCD_find_proc_info.Plo \ + coredump/$(DEPDIR)/_UCD_get_elf_filename.Plo \ + coredump/$(DEPDIR)/_UCD_get_mapinfo_generic.Plo \ + coredump/$(DEPDIR)/_UCD_get_mapinfo_linux.Plo \ + coredump/$(DEPDIR)/_UCD_get_mapinfo_qnx.Plo \ + coredump/$(DEPDIR)/_UCD_get_proc_name.Plo \ + coredump/$(DEPDIR)/_UCD_get_threadinfo_prstatus.Plo \ + coredump/$(DEPDIR)/_UPT_access_fpreg.Plo \ + coredump/$(DEPDIR)/_UPT_elf.Plo \ + coredump/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo \ + coredump/$(DEPDIR)/_UPT_put_unwind_info.Plo \ + coredump/$(DEPDIR)/_UPT_resume.Plo \ + coredump/$(DEPDIR)/ucd_file_table.Plo \ + dwarf/$(DEPDIR)/Gexpr.Plo dwarf/$(DEPDIR)/Gfde.Plo \ + dwarf/$(DEPDIR)/Gfind_proc_info-lsb.Plo \ + dwarf/$(DEPDIR)/Gfind_unwind_table.Plo \ + dwarf/$(DEPDIR)/Gget_proc_info_in_range.Plo \ + dwarf/$(DEPDIR)/Gparser.Plo dwarf/$(DEPDIR)/Gpe.Plo \ + dwarf/$(DEPDIR)/Lexpr.Plo dwarf/$(DEPDIR)/Lfde.Plo \ + dwarf/$(DEPDIR)/Lfind_proc_info-lsb.Plo \ + dwarf/$(DEPDIR)/Lfind_unwind_table.Plo \ + dwarf/$(DEPDIR)/Lget_proc_info_in_range.Plo \ + dwarf/$(DEPDIR)/Lparser.Plo dwarf/$(DEPDIR)/Lpe.Plo \ + dwarf/$(DEPDIR)/global.Plo hppa/$(DEPDIR)/Gapply_reg_state.Plo \ + hppa/$(DEPDIR)/Gcreate_addr_space.Plo \ + hppa/$(DEPDIR)/Gget_proc_info.Plo \ + hppa/$(DEPDIR)/Gget_save_loc.Plo hppa/$(DEPDIR)/Gglobal.Plo \ + hppa/$(DEPDIR)/Ginit.Plo hppa/$(DEPDIR)/Ginit_local.Plo \ + hppa/$(DEPDIR)/Ginit_remote.Plo \ + hppa/$(DEPDIR)/Gis_signal_frame.Plo \ + hppa/$(DEPDIR)/Greg_states_iterate.Plo \ + hppa/$(DEPDIR)/Gregs.Plo hppa/$(DEPDIR)/Gresume.Plo \ + hppa/$(DEPDIR)/Gstep.Plo hppa/$(DEPDIR)/Lapply_reg_state.Plo \ + hppa/$(DEPDIR)/Lcreate_addr_space.Plo \ + hppa/$(DEPDIR)/Lget_proc_info.Plo \ + hppa/$(DEPDIR)/Lget_save_loc.Plo hppa/$(DEPDIR)/Lglobal.Plo \ + hppa/$(DEPDIR)/Linit.Plo hppa/$(DEPDIR)/Linit_local.Plo \ + hppa/$(DEPDIR)/Linit_remote.Plo \ + hppa/$(DEPDIR)/Lis_signal_frame.Plo \ + hppa/$(DEPDIR)/Lreg_states_iterate.Plo \ + hppa/$(DEPDIR)/Lregs.Plo hppa/$(DEPDIR)/Lresume.Plo \ + hppa/$(DEPDIR)/Lstep.Plo hppa/$(DEPDIR)/getcontext.Plo \ + hppa/$(DEPDIR)/regname.Plo hppa/$(DEPDIR)/setcontext.Plo \ + hppa/$(DEPDIR)/siglongjmp.Plo \ + ia64/$(DEPDIR)/Gapply_reg_state.Plo \ + ia64/$(DEPDIR)/Gcreate_addr_space.Plo \ + ia64/$(DEPDIR)/Gfind_unwind_table.Plo \ + ia64/$(DEPDIR)/Gget_proc_info.Plo \ + ia64/$(DEPDIR)/Gget_save_loc.Plo ia64/$(DEPDIR)/Gglobal.Plo \ + ia64/$(DEPDIR)/Ginit.Plo ia64/$(DEPDIR)/Ginit_local.Plo \ + ia64/$(DEPDIR)/Ginit_remote.Plo \ + ia64/$(DEPDIR)/Ginstall_cursor.Plo \ + ia64/$(DEPDIR)/Gis_signal_frame.Plo ia64/$(DEPDIR)/Gparser.Plo \ + ia64/$(DEPDIR)/Grbs.Plo ia64/$(DEPDIR)/Greg_states_iterate.Plo \ + ia64/$(DEPDIR)/Gregs.Plo ia64/$(DEPDIR)/Gresume.Plo \ + ia64/$(DEPDIR)/Gscript.Plo ia64/$(DEPDIR)/Gstep.Plo \ + ia64/$(DEPDIR)/Gtables.Plo ia64/$(DEPDIR)/Lapply_reg_state.Plo \ + ia64/$(DEPDIR)/Lcreate_addr_space.Plo \ + ia64/$(DEPDIR)/Lfind_unwind_table.Plo \ + ia64/$(DEPDIR)/Lget_proc_info.Plo \ + ia64/$(DEPDIR)/Lget_save_loc.Plo ia64/$(DEPDIR)/Lglobal.Plo \ + ia64/$(DEPDIR)/Linit.Plo ia64/$(DEPDIR)/Linit_local.Plo \ + ia64/$(DEPDIR)/Linit_remote.Plo \ + ia64/$(DEPDIR)/Linstall_cursor.Plo \ + ia64/$(DEPDIR)/Lis_signal_frame.Plo ia64/$(DEPDIR)/Lparser.Plo \ + ia64/$(DEPDIR)/Lrbs.Plo ia64/$(DEPDIR)/Lreg_states_iterate.Plo \ + ia64/$(DEPDIR)/Lregs.Plo ia64/$(DEPDIR)/Lresume.Plo \ + ia64/$(DEPDIR)/Lscript.Plo ia64/$(DEPDIR)/Lstep.Plo \ + ia64/$(DEPDIR)/Ltables.Plo ia64/$(DEPDIR)/dyn_info_list.Plo \ + ia64/$(DEPDIR)/getcontext.Plo ia64/$(DEPDIR)/longjmp.Plo \ + ia64/$(DEPDIR)/regname.Plo ia64/$(DEPDIR)/setjmp.Plo \ + ia64/$(DEPDIR)/siglongjmp.Plo ia64/$(DEPDIR)/sigsetjmp.Plo \ + loongarch64/$(DEPDIR)/Gapply_reg_state.Plo \ + loongarch64/$(DEPDIR)/Gcreate_addr_space.Plo \ + loongarch64/$(DEPDIR)/Gget_proc_info.Plo \ + loongarch64/$(DEPDIR)/Gget_save_loc.Plo \ + loongarch64/$(DEPDIR)/Gglobal.Plo \ + loongarch64/$(DEPDIR)/Ginit.Plo \ + loongarch64/$(DEPDIR)/Ginit_local.Plo \ + loongarch64/$(DEPDIR)/Ginit_remote.Plo \ + loongarch64/$(DEPDIR)/Gis_signal_frame.Plo \ + loongarch64/$(DEPDIR)/Greg_states_iterate.Plo \ + loongarch64/$(DEPDIR)/Gregs.Plo \ + loongarch64/$(DEPDIR)/Gresume.Plo \ + loongarch64/$(DEPDIR)/Gstep.Plo \ + loongarch64/$(DEPDIR)/Lapply_reg_state.Plo \ + loongarch64/$(DEPDIR)/Lcreate_addr_space.Plo \ + loongarch64/$(DEPDIR)/Lget_proc_info.Plo \ + loongarch64/$(DEPDIR)/Lget_save_loc.Plo \ + loongarch64/$(DEPDIR)/Lglobal.Plo \ + loongarch64/$(DEPDIR)/Linit.Plo \ + loongarch64/$(DEPDIR)/Linit_local.Plo \ + loongarch64/$(DEPDIR)/Linit_remote.Plo \ + loongarch64/$(DEPDIR)/Lis_signal_frame.Plo \ + loongarch64/$(DEPDIR)/Lreg_states_iterate.Plo \ + loongarch64/$(DEPDIR)/Lregs.Plo \ + loongarch64/$(DEPDIR)/Lresume.Plo \ + loongarch64/$(DEPDIR)/Lstep.Plo \ + loongarch64/$(DEPDIR)/getcontext.Plo \ + loongarch64/$(DEPDIR)/is_fpreg.Plo \ + loongarch64/$(DEPDIR)/regname.Plo \ + loongarch64/$(DEPDIR)/siglongjmp.Plo \ + mi/$(DEPDIR)/Gaddress_validator.Plo \ + mi/$(DEPDIR)/Gdestroy_addr_space.Plo \ + mi/$(DEPDIR)/Gdyn-extract.Plo mi/$(DEPDIR)/Gdyn-remote.Plo \ + mi/$(DEPDIR)/Gfind_dynamic_proc_info.Plo \ + mi/$(DEPDIR)/Gget_accessors.Plo \ + mi/$(DEPDIR)/Gget_elf_filename.Plo mi/$(DEPDIR)/Gget_fpreg.Plo \ + mi/$(DEPDIR)/Gget_proc_info_by_ip.Plo \ + mi/$(DEPDIR)/Gget_proc_name.Plo mi/$(DEPDIR)/Gget_reg.Plo \ + mi/$(DEPDIR)/Gput_dynamic_unwind_info.Plo \ + mi/$(DEPDIR)/Gset_cache_size.Plo \ + mi/$(DEPDIR)/Gset_caching_policy.Plo \ + mi/$(DEPDIR)/Gset_fpreg.Plo \ + mi/$(DEPDIR)/Gset_iterate_phdr_function.Plo \ + mi/$(DEPDIR)/Gset_reg.Plo mi/$(DEPDIR)/Laddress_validator.Plo \ + mi/$(DEPDIR)/Ldestroy_addr_space.Plo \ + mi/$(DEPDIR)/Ldyn-extract.Plo \ + mi/$(DEPDIR)/Lfind_dynamic_proc_info.Plo \ + mi/$(DEPDIR)/Lget_accessors.Plo \ + mi/$(DEPDIR)/Lget_elf_filename.Plo mi/$(DEPDIR)/Lget_fpreg.Plo \ + mi/$(DEPDIR)/Lget_proc_info_by_ip.Plo \ + mi/$(DEPDIR)/Lget_proc_name.Plo mi/$(DEPDIR)/Lget_reg.Plo \ + mi/$(DEPDIR)/Lput_dynamic_unwind_info.Plo \ + mi/$(DEPDIR)/Lset_cache_size.Plo \ + mi/$(DEPDIR)/Lset_caching_policy.Plo \ + mi/$(DEPDIR)/Lset_fpreg.Plo \ + mi/$(DEPDIR)/Lset_iterate_phdr_function.Plo \ + mi/$(DEPDIR)/Lset_reg.Plo mi/$(DEPDIR)/_ReadSLEB.Plo \ + mi/$(DEPDIR)/_ReadULEB.Plo mi/$(DEPDIR)/backtrace.Plo \ + mi/$(DEPDIR)/dyn-cancel.Plo mi/$(DEPDIR)/dyn-info-list.Plo \ + mi/$(DEPDIR)/dyn-register.Plo mi/$(DEPDIR)/flush_cache.Plo \ + mi/$(DEPDIR)/init.Plo mi/$(DEPDIR)/mempool.Plo \ + mi/$(DEPDIR)/strerror.Plo mips/$(DEPDIR)/Gapply_reg_state.Plo \ + mips/$(DEPDIR)/Gcreate_addr_space.Plo \ + mips/$(DEPDIR)/Gget_proc_info.Plo \ + mips/$(DEPDIR)/Gget_save_loc.Plo mips/$(DEPDIR)/Gglobal.Plo \ + mips/$(DEPDIR)/Ginit.Plo mips/$(DEPDIR)/Ginit_local.Plo \ + mips/$(DEPDIR)/Ginit_remote.Plo \ + mips/$(DEPDIR)/Gis_signal_frame.Plo \ + mips/$(DEPDIR)/Greg_states_iterate.Plo \ + mips/$(DEPDIR)/Gregs.Plo mips/$(DEPDIR)/Gresume.Plo \ + mips/$(DEPDIR)/Gstep.Plo mips/$(DEPDIR)/Lapply_reg_state.Plo \ + mips/$(DEPDIR)/Lcreate_addr_space.Plo \ + mips/$(DEPDIR)/Lget_proc_info.Plo \ + mips/$(DEPDIR)/Lget_save_loc.Plo mips/$(DEPDIR)/Lglobal.Plo \ + mips/$(DEPDIR)/Linit.Plo mips/$(DEPDIR)/Linit_local.Plo \ + mips/$(DEPDIR)/Linit_remote.Plo \ + mips/$(DEPDIR)/Lis_signal_frame.Plo \ + mips/$(DEPDIR)/Lreg_states_iterate.Plo \ + mips/$(DEPDIR)/Lregs.Plo mips/$(DEPDIR)/Lresume.Plo \ + mips/$(DEPDIR)/Lstep.Plo mips/$(DEPDIR)/getcontext.Plo \ + mips/$(DEPDIR)/is_fpreg.Plo mips/$(DEPDIR)/regname.Plo \ + mips/$(DEPDIR)/siglongjmp.Plo \ + nto/$(DEPDIR)/unw_nto_access_fpreg.Plo \ + nto/$(DEPDIR)/unw_nto_access_mem.Plo \ + nto/$(DEPDIR)/unw_nto_access_reg.Plo \ + nto/$(DEPDIR)/unw_nto_accessors.Plo \ + nto/$(DEPDIR)/unw_nto_create.Plo \ + nto/$(DEPDIR)/unw_nto_destroy.Plo \ + nto/$(DEPDIR)/unw_nto_elf.Plo \ + nto/$(DEPDIR)/unw_nto_find_proc_info.Plo \ + nto/$(DEPDIR)/unw_nto_get_dyn_info_list_addr.Plo \ + nto/$(DEPDIR)/unw_nto_get_elf_filename.Plo \ + nto/$(DEPDIR)/unw_nto_get_proc_name.Plo \ + nto/$(DEPDIR)/unw_nto_put_unwind_info.Plo \ + nto/$(DEPDIR)/unw_nto_resume.Plo \ + ppc/$(DEPDIR)/Gget_proc_info.Plo \ + ppc/$(DEPDIR)/Gget_save_loc.Plo ppc/$(DEPDIR)/Ginit_local.Plo \ + ppc/$(DEPDIR)/Ginit_remote.Plo \ + ppc/$(DEPDIR)/Gis_signal_frame.Plo \ + ppc/$(DEPDIR)/Lget_proc_info.Plo \ + ppc/$(DEPDIR)/Lget_save_loc.Plo ppc/$(DEPDIR)/Linit_local.Plo \ + ppc/$(DEPDIR)/Linit_remote.Plo \ + ppc/$(DEPDIR)/Lis_signal_frame.Plo ppc/$(DEPDIR)/longjmp.Plo \ + ppc/$(DEPDIR)/siglongjmp.Plo \ + ppc32/$(DEPDIR)/Gapply_reg_state.Plo \ + ppc32/$(DEPDIR)/Gcreate_addr_space.Plo \ + ppc32/$(DEPDIR)/Gglobal.Plo ppc32/$(DEPDIR)/Ginit.Plo \ + ppc32/$(DEPDIR)/Greg_states_iterate.Plo \ + ppc32/$(DEPDIR)/Gregs.Plo ppc32/$(DEPDIR)/Gresume.Plo \ + ppc32/$(DEPDIR)/Gstep.Plo ppc32/$(DEPDIR)/Lapply_reg_state.Plo \ + ppc32/$(DEPDIR)/Lcreate_addr_space.Plo \ + ppc32/$(DEPDIR)/Lglobal.Plo ppc32/$(DEPDIR)/Linit.Plo \ + ppc32/$(DEPDIR)/Lreg_states_iterate.Plo \ + ppc32/$(DEPDIR)/Lregs.Plo ppc32/$(DEPDIR)/Lresume.Plo \ + ppc32/$(DEPDIR)/Lstep.Plo ppc32/$(DEPDIR)/get_func_addr.Plo \ + ppc32/$(DEPDIR)/is_fpreg.Plo ppc32/$(DEPDIR)/regname.Plo \ + ppc64/$(DEPDIR)/Gapply_reg_state.Plo \ + ppc64/$(DEPDIR)/Gcreate_addr_space.Plo \ + ppc64/$(DEPDIR)/Gglobal.Plo ppc64/$(DEPDIR)/Ginit.Plo \ + ppc64/$(DEPDIR)/Greg_states_iterate.Plo \ + ppc64/$(DEPDIR)/Gregs.Plo ppc64/$(DEPDIR)/Gresume.Plo \ + ppc64/$(DEPDIR)/Gstep.Plo ppc64/$(DEPDIR)/Lapply_reg_state.Plo \ + ppc64/$(DEPDIR)/Lcreate_addr_space.Plo \ + ppc64/$(DEPDIR)/Lglobal.Plo ppc64/$(DEPDIR)/Linit.Plo \ + ppc64/$(DEPDIR)/Lreg_states_iterate.Plo \ + ppc64/$(DEPDIR)/Lregs.Plo ppc64/$(DEPDIR)/Lresume.Plo \ + ppc64/$(DEPDIR)/Lstep.Plo ppc64/$(DEPDIR)/get_func_addr.Plo \ + ppc64/$(DEPDIR)/is_fpreg.Plo ppc64/$(DEPDIR)/regname.Plo \ + ptrace/$(DEPDIR)/_UPT_access_fpreg.Plo \ + ptrace/$(DEPDIR)/_UPT_access_mem.Plo \ + ptrace/$(DEPDIR)/_UPT_access_reg.Plo \ + ptrace/$(DEPDIR)/_UPT_accessors.Plo \ + ptrace/$(DEPDIR)/_UPT_create.Plo \ + ptrace/$(DEPDIR)/_UPT_destroy.Plo \ + ptrace/$(DEPDIR)/_UPT_elf.Plo \ + ptrace/$(DEPDIR)/_UPT_find_proc_info.Plo \ + ptrace/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo \ + ptrace/$(DEPDIR)/_UPT_get_elf_filename.Plo \ + ptrace/$(DEPDIR)/_UPT_get_proc_name.Plo \ + ptrace/$(DEPDIR)/_UPT_put_unwind_info.Plo \ + ptrace/$(DEPDIR)/_UPT_reg_offset.Plo \ + ptrace/$(DEPDIR)/_UPT_resume.Plo \ + riscv/$(DEPDIR)/Gapply_reg_state.Plo \ + riscv/$(DEPDIR)/Gcreate_addr_space.Plo \ + riscv/$(DEPDIR)/Gget_proc_info.Plo \ + riscv/$(DEPDIR)/Gget_save_loc.Plo riscv/$(DEPDIR)/Gglobal.Plo \ + riscv/$(DEPDIR)/Ginit.Plo riscv/$(DEPDIR)/Ginit_local.Plo \ + riscv/$(DEPDIR)/Ginit_remote.Plo \ + riscv/$(DEPDIR)/Gis_signal_frame.Plo \ + riscv/$(DEPDIR)/Greg_states_iterate.Plo \ + riscv/$(DEPDIR)/Gregs.Plo riscv/$(DEPDIR)/Gresume.Plo \ + riscv/$(DEPDIR)/Gstep.Plo riscv/$(DEPDIR)/Lapply_reg_state.Plo \ + riscv/$(DEPDIR)/Lcreate_addr_space.Plo \ + riscv/$(DEPDIR)/Lget_proc_info.Plo \ + riscv/$(DEPDIR)/Lget_save_loc.Plo riscv/$(DEPDIR)/Lglobal.Plo \ + riscv/$(DEPDIR)/Linit.Plo riscv/$(DEPDIR)/Linit_local.Plo \ + riscv/$(DEPDIR)/Linit_remote.Plo \ + riscv/$(DEPDIR)/Lis_signal_frame.Plo \ + riscv/$(DEPDIR)/Lreg_states_iterate.Plo \ + riscv/$(DEPDIR)/Lregs.Plo riscv/$(DEPDIR)/Lresume.Plo \ + riscv/$(DEPDIR)/Lstep.Plo riscv/$(DEPDIR)/getcontext.Plo \ + riscv/$(DEPDIR)/is_fpreg.Plo riscv/$(DEPDIR)/regname.Plo \ + riscv/$(DEPDIR)/setcontext.Plo riscv/$(DEPDIR)/siglongjmp.Plo \ + s390x/$(DEPDIR)/Gapply_reg_state.Plo \ + s390x/$(DEPDIR)/Gcreate_addr_space.Plo \ + s390x/$(DEPDIR)/Gget_proc_info.Plo \ + s390x/$(DEPDIR)/Gget_save_loc.Plo s390x/$(DEPDIR)/Gglobal.Plo \ + s390x/$(DEPDIR)/Ginit.Plo s390x/$(DEPDIR)/Ginit_local.Plo \ + s390x/$(DEPDIR)/Ginit_remote.Plo \ + s390x/$(DEPDIR)/Gis_signal_frame.Plo \ + s390x/$(DEPDIR)/Greg_states_iterate.Plo \ + s390x/$(DEPDIR)/Gregs.Plo s390x/$(DEPDIR)/Gresume.Plo \ + s390x/$(DEPDIR)/Gstep.Plo s390x/$(DEPDIR)/Lapply_reg_state.Plo \ + s390x/$(DEPDIR)/Lcreate_addr_space.Plo \ + s390x/$(DEPDIR)/Lget_proc_info.Plo \ + s390x/$(DEPDIR)/Lget_save_loc.Plo s390x/$(DEPDIR)/Lglobal.Plo \ + s390x/$(DEPDIR)/Linit.Plo s390x/$(DEPDIR)/Linit_local.Plo \ + s390x/$(DEPDIR)/Linit_remote.Plo \ + s390x/$(DEPDIR)/Lis_signal_frame.Plo \ + s390x/$(DEPDIR)/Lreg_states_iterate.Plo \ + s390x/$(DEPDIR)/Lregs.Plo s390x/$(DEPDIR)/Lresume.Plo \ + s390x/$(DEPDIR)/Lstep.Plo s390x/$(DEPDIR)/getcontext.Plo \ + s390x/$(DEPDIR)/is_fpreg.Plo s390x/$(DEPDIR)/regname.Plo \ + s390x/$(DEPDIR)/setcontext.Plo setjmp/$(DEPDIR)/longjmp.Plo \ + setjmp/$(DEPDIR)/siglongjmp.Plo \ + sh/$(DEPDIR)/Gapply_reg_state.Plo \ + sh/$(DEPDIR)/Gcreate_addr_space.Plo \ + sh/$(DEPDIR)/Gget_proc_info.Plo sh/$(DEPDIR)/Gget_save_loc.Plo \ + sh/$(DEPDIR)/Gglobal.Plo sh/$(DEPDIR)/Ginit.Plo \ + sh/$(DEPDIR)/Ginit_local.Plo sh/$(DEPDIR)/Ginit_remote.Plo \ + sh/$(DEPDIR)/Gis_signal_frame.Plo \ + sh/$(DEPDIR)/Greg_states_iterate.Plo sh/$(DEPDIR)/Gregs.Plo \ + sh/$(DEPDIR)/Gresume.Plo sh/$(DEPDIR)/Gstep.Plo \ + sh/$(DEPDIR)/Lapply_reg_state.Plo \ + sh/$(DEPDIR)/Lcreate_addr_space.Plo \ + sh/$(DEPDIR)/Lget_proc_info.Plo sh/$(DEPDIR)/Lget_save_loc.Plo \ + sh/$(DEPDIR)/Lglobal.Plo sh/$(DEPDIR)/Linit.Plo \ + sh/$(DEPDIR)/Linit_local.Plo sh/$(DEPDIR)/Linit_remote.Plo \ + sh/$(DEPDIR)/Lis_signal_frame.Plo \ + sh/$(DEPDIR)/Lreg_states_iterate.Plo sh/$(DEPDIR)/Lregs.Plo \ + sh/$(DEPDIR)/Lresume.Plo sh/$(DEPDIR)/Lstep.Plo \ + sh/$(DEPDIR)/is_fpreg.Plo sh/$(DEPDIR)/regname.Plo \ + sh/$(DEPDIR)/siglongjmp.Plo unwind/$(DEPDIR)/Backtrace.Plo \ + unwind/$(DEPDIR)/DeleteException.Plo \ + unwind/$(DEPDIR)/FindEnclosingFunction.Plo \ + unwind/$(DEPDIR)/ForcedUnwind.Plo unwind/$(DEPDIR)/GetBSP.Plo \ + unwind/$(DEPDIR)/GetCFA.Plo \ + unwind/$(DEPDIR)/GetDataRelBase.Plo unwind/$(DEPDIR)/GetGR.Plo \ + unwind/$(DEPDIR)/GetIP.Plo unwind/$(DEPDIR)/GetIPInfo.Plo \ + unwind/$(DEPDIR)/GetLanguageSpecificData.Plo \ + unwind/$(DEPDIR)/GetRegionStart.Plo \ + unwind/$(DEPDIR)/GetTextRelBase.Plo \ + unwind/$(DEPDIR)/RaiseException.Plo \ + unwind/$(DEPDIR)/Resume.Plo \ + unwind/$(DEPDIR)/Resume_or_Rethrow.Plo \ + unwind/$(DEPDIR)/SetGR.Plo unwind/$(DEPDIR)/SetIP.Plo \ + x86/$(DEPDIR)/Gapply_reg_state.Plo \ + x86/$(DEPDIR)/Gcreate_addr_space.Plo \ + x86/$(DEPDIR)/Gget_proc_info.Plo \ + x86/$(DEPDIR)/Gget_save_loc.Plo x86/$(DEPDIR)/Gglobal.Plo \ + x86/$(DEPDIR)/Ginit.Plo x86/$(DEPDIR)/Ginit_local.Plo \ + x86/$(DEPDIR)/Ginit_remote.Plo x86/$(DEPDIR)/Gos-freebsd.Plo \ + x86/$(DEPDIR)/Gos-linux.Plo \ + x86/$(DEPDIR)/Greg_states_iterate.Plo x86/$(DEPDIR)/Gregs.Plo \ + x86/$(DEPDIR)/Gresume.Plo x86/$(DEPDIR)/Gstep.Plo \ + x86/$(DEPDIR)/Lapply_reg_state.Plo \ + x86/$(DEPDIR)/Lcreate_addr_space.Plo \ + x86/$(DEPDIR)/Lget_proc_info.Plo \ + x86/$(DEPDIR)/Lget_save_loc.Plo x86/$(DEPDIR)/Lglobal.Plo \ + x86/$(DEPDIR)/Linit.Plo x86/$(DEPDIR)/Linit_local.Plo \ + x86/$(DEPDIR)/Linit_remote.Plo x86/$(DEPDIR)/Los-freebsd.Plo \ + x86/$(DEPDIR)/Los-linux.Plo \ + x86/$(DEPDIR)/Lreg_states_iterate.Plo x86/$(DEPDIR)/Lregs.Plo \ + x86/$(DEPDIR)/Lresume.Plo x86/$(DEPDIR)/Lstep.Plo \ + x86/$(DEPDIR)/getcontext-freebsd.Plo \ + x86/$(DEPDIR)/getcontext-linux.Plo x86/$(DEPDIR)/is_fpreg.Plo \ + x86/$(DEPDIR)/longjmp.Plo x86/$(DEPDIR)/regname.Plo \ + x86/$(DEPDIR)/siglongjmp.Plo \ + x86_64/$(DEPDIR)/Gapply_reg_state.Plo \ + x86_64/$(DEPDIR)/Gcreate_addr_space.Plo \ + x86_64/$(DEPDIR)/Gget_proc_info.Plo \ + x86_64/$(DEPDIR)/Gget_save_loc.Plo \ + x86_64/$(DEPDIR)/Gglobal.Plo x86_64/$(DEPDIR)/Ginit.Plo \ + x86_64/$(DEPDIR)/Ginit_local.Plo \ + x86_64/$(DEPDIR)/Ginit_remote.Plo \ + x86_64/$(DEPDIR)/Gos-freebsd.Plo \ + x86_64/$(DEPDIR)/Gos-linux.Plo x86_64/$(DEPDIR)/Gos-qnx.Plo \ + x86_64/$(DEPDIR)/Gos-solaris.Plo \ + x86_64/$(DEPDIR)/Greg_states_iterate.Plo \ + x86_64/$(DEPDIR)/Gregs.Plo x86_64/$(DEPDIR)/Gresume.Plo \ + x86_64/$(DEPDIR)/Gstash_frame.Plo x86_64/$(DEPDIR)/Gstep.Plo \ + x86_64/$(DEPDIR)/Gtrace.Plo \ + x86_64/$(DEPDIR)/Lapply_reg_state.Plo \ + x86_64/$(DEPDIR)/Lcreate_addr_space.Plo \ + x86_64/$(DEPDIR)/Lget_proc_info.Plo \ + x86_64/$(DEPDIR)/Lget_save_loc.Plo \ + x86_64/$(DEPDIR)/Lglobal.Plo x86_64/$(DEPDIR)/Linit.Plo \ + x86_64/$(DEPDIR)/Linit_local.Plo \ + x86_64/$(DEPDIR)/Linit_remote.Plo \ + x86_64/$(DEPDIR)/Los-freebsd.Plo \ + x86_64/$(DEPDIR)/Los-linux.Plo x86_64/$(DEPDIR)/Los-qnx.Plo \ + x86_64/$(DEPDIR)/Los-solaris.Plo \ + x86_64/$(DEPDIR)/Lreg_states_iterate.Plo \ + x86_64/$(DEPDIR)/Lregs.Plo x86_64/$(DEPDIR)/Lresume.Plo \ + x86_64/$(DEPDIR)/Lstash_frame.Plo x86_64/$(DEPDIR)/Lstep.Plo \ + x86_64/$(DEPDIR)/Ltrace.Plo x86_64/$(DEPDIR)/getcontext.Plo \ + x86_64/$(DEPDIR)/is_fpreg.Plo x86_64/$(DEPDIR)/longjmp.Plo \ + x86_64/$(DEPDIR)/regname.Plo x86_64/$(DEPDIR)/setcontext.Plo \ + x86_64/$(DEPDIR)/siglongjmp.Plo am__mv = mv -f CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ +LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CCASFLAGS) $(CCASFLAGS) @@ -1158,11 +1659,11 @@ $(libunwind_elfxx_la_SOURCES) $(libunwind_hppa_la_SOURCES) \ $(libunwind_ia64_la_SOURCES) \ $(libunwind_loongarch64_la_SOURCES) \ - $(libunwind_mips_la_SOURCES) $(libunwind_ppc32_la_SOURCES) \ - $(libunwind_ppc64_la_SOURCES) $(libunwind_ptrace_la_SOURCES) \ - $(libunwind_riscv_la_SOURCES) $(libunwind_s390x_la_SOURCES) \ - $(libunwind_setjmp_la_SOURCES) $(libunwind_sh_la_SOURCES) \ - $(libunwind_tilegx_la_SOURCES) $(libunwind_x86_la_SOURCES) \ + $(libunwind_mips_la_SOURCES) $(libunwind_nto_la_SOURCES) \ + $(libunwind_ppc32_la_SOURCES) $(libunwind_ppc64_la_SOURCES) \ + $(libunwind_ptrace_la_SOURCES) $(libunwind_riscv_la_SOURCES) \ + $(libunwind_s390x_la_SOURCES) $(libunwind_setjmp_la_SOURCES) \ + $(libunwind_sh_la_SOURCES) $(libunwind_x86_la_SOURCES) \ $(libunwind_x86_64_la_SOURCES) $(libunwind_la_SOURCES) DIST_SOURCES = $(am__libunwind_aarch64_la_SOURCES_DIST) \ $(am__libunwind_arm_la_SOURCES_DIST) \ @@ -1176,6 +1677,7 @@ $(am__libunwind_ia64_la_SOURCES_DIST) \ $(am__libunwind_loongarch64_la_SOURCES_DIST) \ $(am__libunwind_mips_la_SOURCES_DIST) \ + $(libunwind_nto_la_SOURCES) \ $(am__libunwind_ppc32_la_SOURCES_DIST) \ $(am__libunwind_ppc64_la_SOURCES_DIST) \ $(libunwind_ptrace_la_SOURCES) \ @@ -1183,7 +1685,6 @@ $(am__libunwind_s390x_la_SOURCES_DIST) \ $(am__libunwind_setjmp_la_SOURCES_DIST) \ $(am__libunwind_sh_la_SOURCES_DIST) \ - $(am__libunwind_tilegx_la_SOURCES_DIST) \ $(am__libunwind_x86_la_SOURCES_DIST) \ $(am__libunwind_x86_64_la_SOURCES_DIST) \ $(am__libunwind_la_SOURCES_DIST) @@ -1294,6 +1795,7 @@ PKG_MAINTAINER = @PKG_MAINTAINER@ PKG_MAJOR = @PKG_MAJOR@ PKG_MINOR = @PKG_MINOR@ +PTHREADS_LIB = @PTHREADS_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -1363,9 +1865,12 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -SOVERSION = 8:1:0 # See comments at end of file. + +# Set the DSO versions +SOVERSION = 9:0:1 # See comments at end of file. SETJMP_SO_VERSION = 0:0:0 COREDUMP_SO_VERSION = 0:0:0 + # # Don't link with start-files since we don't use any constructors/destructors: # @@ -1374,7 +1879,7 @@ # # Which libraries to build and install # -# Order is important here. The names of teh libraries need to end up in reverse +# Order is important here. The names of the libraries need to end up in reverse # dependency order for `make install` to do its job properly. # lib_LTLIBRARIES = $(am__append_1) $(am__append_2) $(am__append_3) \ @@ -1384,173 +1889,261 @@ $(am__append_13) $(am__append_14) $(am__append_15) \ $(am__append_16) $(am__append_17) $(am__append_18) -# The list of files that go into libunwind and libunwind-aarch64: +### libunwind-coredump: -# The list of files that go into libunwind and libunwind-arm: +### libunwind-nto: -# The list of files that go both into libunwind and libunwind-ia64: +### libunwind-ptrace: -# The list of files that go both into libunwind and libunwind-hppa: +### libunwind-setjmp: -# The list of files that go info libunwind and libunwind-mips: +### target AArch64: +# The list of files that go into libunwind and libunwind-aarch64: -# The list of files that go info libunwind and libunwind-tilegx: +### target ARMv7: +# The list of files that go into libunwind and libunwind-arm: -# The list of files that go info libunwind and libunwind-riscv: +### target HP-PA: +# The list of files that go both into libunwind and libunwind-hppa: -# The list of files that go info libunwind and libunwind-loongarch64: +### target IA-64: +# The list of files that go both into libunwind and libunwind-ia64: -# The list of files that go both into libunwind and libunwind-x86: +### target LoongArch64: +# The list of files that go info libunwind and libunwind-loongarch64: -# The list of files that go both into libunwind and libunwind-x86_64: +### target MIPS: +# The list of files that go info libunwind and libunwind-mips: # The list of files that go both into libunwind and libunwind-ppc32: # The list of files that go both into libunwind and libunwind-ppc64: -# The list of files that go into libunwind and libunwind-sh: +### target RISC-V: +# The list of files that go info libunwind and libunwind-riscv: +### target s390x: # The list of files that go both into libunwind and libunwind-s390x: -noinst_HEADERS = ptrace/_UPT_internal.h coredump/_UCD_internal.h \ - coredump/_UCD_lib.h coredump/ucd_file_table.h \ - setjmp/setjmp_i.h os-linux.h elf32.h elf64.h elfxx.h \ - aarch64/init.h aarch64/offsets.h aarch64/unwind_i.h arm/init.h \ - arm/offsets.h arm/unwind_i.h ia64/init.h ia64/offsets.h \ - ia64/regs.h ia64/ucontext_i.h ia64/unwind_decoder.h \ - ia64/unwind_i.h hppa/init.h hppa/offsets.h hppa/unwind_i.h \ - mips/init.h mips/offsets.h mips/unwind_i.h tilegx/init.h \ - tilegx/offsets.h tilegx/unwind_i.h riscv/init.h \ - riscv/offsets.h riscv/unwind_i.h riscv/asm.h \ - loongarch64/init.h loongarch64/offsets.h \ - loongarch64/unwind_i.h x86/init.h x86/offsets.h x86/unwind_i.h \ - x86_64/offsets.h x86_64/init.h x86_64/unwind_i.h \ - x86_64/ucontext_i.h ppc32/init.h ppc32/unwind_i.h \ - ppc32/ucontext_i.h ppc64/init.h ppc64/unwind_i.h \ - ppc64/ucontext_i.h sh/init.h sh/offsets.h sh/unwind_i.h \ - s390x/init.h s390x/unwind_i.h unwind/unwind-internal.h -noinst_LTLIBRARIES = $(am__append_23) $(am__append_24) \ - $(LIBUNWIND_ELF) -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libunwind-generic.pc $(am__append_19) \ - $(am__append_20) $(am__append_21) $(am__append_22) -### libunwind-ptrace: -libunwind_ptrace_la_SOURCES = \ - ptrace/_UPT_elf.c \ - ptrace/_UPT_accessors.c ptrace/_UPT_access_fpreg.c \ - ptrace/_UPT_access_mem.c ptrace/_UPT_access_reg.c \ - ptrace/_UPT_create.c ptrace/_UPT_destroy.c \ - ptrace/_UPT_find_proc_info.c ptrace/_UPT_get_dyn_info_list_addr.c \ - ptrace/_UPT_put_unwind_info.c ptrace/_UPT_get_proc_name.c \ - ptrace/_UPT_reg_offset.c ptrace/_UPT_resume.c +### target Sh: +# The list of files that go into libunwind and libunwind-sh: -libunwind_ptrace_la_LIBADD = libunwind-$(arch).la $(LIBLZMA) +### target x86: +# The list of files that go both into libunwind and libunwind-x86: -### libunwind-coredump: -libunwind_coredump_la_SOURCES = coredump/_UCD_accessors.c \ +### target x86_64: +# The list of files that go both into libunwind and libunwind-x86_64: +noinst_HEADERS = coredump/_UCD_internal.h coredump/_UCD_lib.h \ + coredump/ucd_file_table.h nto/unw_nto_internal.h \ + ptrace/_UPT_internal.h setjmp/setjmp_i.h os-linux.h elf32.h \ + elf64.h elfxx.h aarch64/init.h aarch64/ucontext_i.h \ + aarch64/unwind_i.h arm/init.h arm/offsets.h arm/unwind_i.h \ + hppa/init.h hppa/offsets.h hppa/unwind_i.h ia64/init.h \ + ia64/offsets.h ia64/regs.h ia64/ucontext_i.h \ + ia64/unwind_decoder.h ia64/unwind_i.h loongarch64/init.h \ + loongarch64/offsets.h loongarch64/unwind_i.h mips/init.h \ + mips/offsets.h mips/unwind_i.h ppc32/init.h ppc32/unwind_i.h \ + ppc32/ucontext_i.h ppc64/init.h ppc64/unwind_i.h \ + ppc64/ucontext_i.h riscv/asm.h riscv/init.h riscv/offsets.h \ + riscv/unwind_i.h s390x/init.h s390x/unwind_i.h sh/init.h \ + sh/offsets.h sh/unwind_i.h x86/init.h x86/offsets.h \ + x86/unwind_i.h x86_64/init.h x86_64/ucontext_i.h \ + x86_64/unwind_i.h unwind/unwind-internal.h +noinst_LTLIBRARIES = $(am__append_24) $(am__append_25) \ + $(libunwind_elf_libs) +@USE_ELF32_TRUE@libunwind_elf_libs = libunwind-elf32.la +@USE_ELF64_TRUE@libunwind_elf_libs = libunwind-elf64.la +@USE_ELFXX_TRUE@libunwind_elf_libs = libunwind-elfxx.la + +# If local unwinding is being built, link in the local unwinding functions +libunwind_libadd = $(am__append_19) + +### pkg-config: +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libunwind-generic.pc $(am__append_20) \ + $(am__append_21) $(am__append_22) $(am__append_23) +libunwind_coredump_la_SOURCES = coredump/_UCD_access_mem.c \ + coredump/_UCD_accessors.c coredump/_UCD_corefile_elf.c \ coredump/_UCD_create.c coredump/_UCD_destroy.c \ - coredump/_UCD_access_mem.c coredump/_UCD_elf_map_image.c \ + coredump/_UCD_elf_map_image.c coredump/ucd_file_table.c \ coredump/_UCD_find_proc_info.c coredump/_UCD_get_proc_name.c \ - coredump/_UCD_corefile_elf.c coredump/ucd_file_table.c \ - coredump/_UPT_elf.c coredump/_UPT_access_fpreg.c \ + coredump/_UCD_get_elf_filename.c mi/init.c coredump/_UPT_elf.c \ + coredump/_UPT_access_fpreg.c \ coredump/_UPT_get_dyn_info_list_addr.c \ coredump/_UPT_put_unwind_info.c coredump/_UPT_resume.c \ - $(am__append_26) $(am__append_27) -libunwind_coredump_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \ - -version-info $(COREDUMP_SO_VERSION) + $(am__append_27) $(am__append_28) $(am__append_29) +libunwind_coredump_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(COREDUMP_SO_VERSION) -libunwind_coredump_la_LIBADD = libunwind-$(arch).la $(LIBLZMA) $(LIBZ) +libunwind_coredump_la_LIBADD = \ + libunwind-$(arch).la \ + $(LIBLZMA) $(LIBZ) -### libunwind-setjmp: -libunwind_setjmp_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \ - -version-info $(SETJMP_SO_VERSION) +libunwind_nto_la_SOURCES = \ + mi/init.c \ + nto/unw_nto_access_fpreg.c \ + nto/unw_nto_access_mem.c \ + nto/unw_nto_accessors.c \ + nto/unw_nto_access_reg.c \ + nto/unw_nto_create.c \ + nto/unw_nto_destroy.c \ + nto/unw_nto_elf.c \ + nto/unw_nto_find_proc_info.c \ + nto/unw_nto_get_dyn_info_list_addr.c \ + nto/unw_nto_get_proc_name.c \ + nto/unw_nto_get_elf_filename.c \ + nto/unw_nto_put_unwind_info.c \ + nto/unw_nto_resume.c + +libunwind_nto_la_LIBADD = \ + libunwind-$(arch).la \ + $(libunwind_libadd) -@USE_ELF32_TRUE@LIBUNWIND_ELF = libunwind-elf32.la -@USE_ELF64_TRUE@LIBUNWIND_ELF = libunwind-elf64.la -@USE_ELFXX_TRUE@LIBUNWIND_ELF = libunwind-elfxx.la -libunwind_setjmp_la_LIBADD = $(LIBUNWIND_ELF) \ - libunwind-$(arch).la \ - libunwind.la -lc - -libunwind_setjmp_la_SOURCES = setjmp/longjmp.c setjmp/siglongjmp.c \ - $(am__append_29) $(am__append_31) $(am__append_33) \ - $(am__append_35) $(am__append_37) $(am__append_39) \ - $(am__append_41) $(am__append_43) $(am__append_45) \ - $(am__append_47) $(am__append_49) $(am__append_51) \ - $(am__append_53) +libunwind_ptrace_la_SOURCES = \ + mi/init.c \ + ptrace/_UPT_access_fpreg.c \ + ptrace/_UPT_access_mem.c \ + ptrace/_UPT_accessors.c \ + ptrace/_UPT_access_reg.c \ + ptrace/_UPT_create.c \ + ptrace/_UPT_destroy.c \ + ptrace/_UPT_elf.c \ + ptrace/_UPT_find_proc_info.c \ + ptrace/_UPT_get_dyn_info_list_addr.c \ + ptrace/_UPT_get_proc_name.c \ + ptrace/_UPT_get_elf_filename.c \ + ptrace/_UPT_put_unwind_info.c \ + ptrace/_UPT_reg_offset.c \ + ptrace/_UPT_resume.c -### libunwind: -libunwind_la_LIBADD = $(am__append_25) $(LIBUNWIND_ELF) -lc $(LIBCRTS) \ +libunwind_ptrace_la_LIBADD = \ + libunwind-$(arch).la \ $(LIBLZMA) $(LIBZ) +libunwind_setjmp_la_SOURCES = mi/init.c setjmp/longjmp.c \ + setjmp/siglongjmp.c $(am__append_30) $(am__append_31) \ + $(am__append_32) $(am__append_33) $(am__append_34) \ + $(am__append_35) $(am__append_36) $(am__append_37) \ + $(am__append_38) $(am__append_39) $(am__append_40) \ + $(am__append_41) +libunwind_setjmp_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SETJMP_SO_VERSION) + +libunwind_setjmp_la_LIBADD = \ + $(libunwind_elf_libs) \ + libunwind-$(arch).la \ + $(libunwind_libadd) + + +### libunwind: +libunwind_la_LIBADD = $(am__append_26) $(libunwind_elf_libs) -lc \ + $(LIBCRTS) $(LIBLZMA) $(LIBZ) + # List of arch-independent files needed by both local-only and generic # libraries: libunwind_la_SOURCES_common = \ - $(libunwind_la_SOURCES_os) \ - mi/init.c mi/flush_cache.c mi/mempool.c mi/strerror.c + $(libunwind_la_SOURCES_os) \ + mi/init.c \ + mi/flush_cache.c \ + mi/mempool.c \ + mi/strerror.c # List of arch-independent files needed by generic library (libunwind-$ARCH): libunwind_la_SOURCES_generic = \ - mi/Gdyn-extract.c mi/Gdyn-remote.c mi/Gfind_dynamic_proc_info.c \ - mi/Gget_accessors.c \ - mi/Gget_proc_info_by_ip.c mi/Gget_proc_name.c \ - mi/Gget_proc_info_in_range.c \ - mi/Gput_dynamic_unwind_info.c mi/Gdestroy_addr_space.c \ - mi/Gget_reg.c mi/Gset_reg.c \ - mi/Gget_fpreg.c mi/Gset_fpreg.c \ - mi/Gset_caching_policy.c \ - mi/Gset_cache_size.c + mi/Gaddress_validator.c \ + mi/Gdestroy_addr_space.c \ + mi/Gdyn-extract.c \ + mi/Gdyn-remote.c \ + mi/Gfind_dynamic_proc_info.c \ + mi/Gget_accessors.c \ + mi/Gget_fpreg.c \ + mi/Gget_proc_info_by_ip.c \ + mi/Gget_proc_name.c \ + mi/Gget_reg.c \ + mi/Gput_dynamic_unwind_info.c \ + mi/Gset_cache_size.c \ + mi/Gset_caching_policy.c \ + mi/Gset_fpreg.c \ + mi/Gset_iterate_phdr_function.c \ + mi/Gset_reg.c \ + mi/Gget_elf_filename.c @SUPPORT_CXX_EXCEPTIONS_TRUE@libunwind_la_SOURCES_local_unwind = \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/Backtrace.c unwind/DeleteException.c \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/FindEnclosingFunction.c unwind/ForcedUnwind.c \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetBSP.c unwind/GetCFA.c unwind/GetDataRelBase.c \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetGR.c unwind/GetIP.c unwind/GetLanguageSpecificData.c \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetRegionStart.c unwind/GetTextRelBase.c \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/RaiseException.c unwind/Resume.c \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/Resume_or_Rethrow.c unwind/SetGR.c unwind/SetIP.c \ -@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetIPInfo.c +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/Backtrace.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/DeleteException.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/FindEnclosingFunction.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/ForcedUnwind.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetBSP.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetCFA.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetDataRelBase.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetGR.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetIP.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetIPInfo.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetLanguageSpecificData.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetRegionStart.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/GetTextRelBase.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/RaiseException.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/Resume.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/Resume_or_Rethrow.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/SetGR.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ unwind/SetIP.c # _ReadULEB()/_ReadSLEB() are needed for Intel C++ 8.0 compatibility -@SUPPORT_CXX_EXCEPTIONS_TRUE@libunwind_la_SOURCES_os_linux_local = mi/_ReadULEB.c mi/_ReadSLEB.c +@SUPPORT_CXX_EXCEPTIONS_TRUE@libunwind_la_SOURCES_os_linux_local = \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ mi/_ReadULEB.c \ +@SUPPORT_CXX_EXCEPTIONS_TRUE@ mi/_ReadSLEB.c + # List of arch-independent files needed by local-only library (libunwind): libunwind_la_SOURCES_local_nounwind = \ - $(libunwind_la_SOURCES_os_local) \ - mi/backtrace.c \ - mi/dyn-cancel.c mi/dyn-info-list.c mi/dyn-register.c \ - mi/Ldyn-extract.c mi/Lfind_dynamic_proc_info.c \ - mi/Lget_accessors.c \ - mi/Lget_proc_info_by_ip.c mi/Lget_proc_name.c \ - mi/Lget_proc_info_in_range.c \ - mi/Lput_dynamic_unwind_info.c mi/Ldestroy_addr_space.c \ - mi/Lget_reg.c mi/Lset_reg.c \ - mi/Lget_fpreg.c mi/Lset_fpreg.c \ - mi/Lset_caching_policy.c \ - mi/Lset_cache_size.c + $(libunwind_la_SOURCES_os_local) \ + mi/backtrace.c \ + mi/dyn-cancel.c \ + mi/dyn-info-list.c \ + mi/dyn-register.c \ + mi/Laddress_validator.c \ + mi/Ldestroy_addr_space.c \ + mi/Ldyn-extract.c \ + mi/Lfind_dynamic_proc_info.c \ + mi/Lget_accessors.c \ + mi/Lget_fpreg.c mi/Lset_fpreg.c \ + mi/Lget_proc_info_by_ip.c \ + mi/Lget_proc_name.c \ + mi/Lget_reg.c \ + mi/Lput_dynamic_unwind_info.c \ + mi/Lset_cache_size.c \ + mi/Lset_caching_policy.c \ + mi/Lset_iterate_phdr_function.c \ + mi/Lset_reg.c \ + mi/Lget_elf_filename.c libunwind_la_SOURCES_local = \ - $(libunwind_la_SOURCES_local_nounwind) \ + $(libunwind_la_SOURCES_local_nounwind) \ $(libunwind_la_SOURCES_local_unwind) -libunwind_la_SOURCES_os_linux = os-linux.c dl-iterate-phdr.c -libunwind_la_SOURCES_os_hpux = os-hpux.c -libunwind_la_SOURCES_os_freebsd = os-freebsd.c -libunwind_la_SOURCES_os_qnx = os-qnx.c -libunwind_la_SOURCES_os_solaris = os-solaris.c libunwind_dwarf_common_la_SOURCES = dwarf/global.c libunwind_dwarf_local_la_SOURCES = \ - dwarf/Lexpr.c dwarf/Lfde.c dwarf/Lparser.c dwarf/Lpe.c \ - dwarf/Lfind_proc_info-lsb.c \ - dwarf/Lfind_unwind_table.c + dwarf/Lexpr.c \ + dwarf/Lfde.c \ + dwarf/Lfind_proc_info-lsb.c \ + dwarf/Lfind_unwind_table.c \ + dwarf/Lget_proc_info_in_range.c \ + dwarf/Lparser.c \ + dwarf/Lpe.c libunwind_dwarf_local_la_LIBADD = libunwind-dwarf-common.la libunwind_dwarf_generic_la_SOURCES = \ - dwarf/Gexpr.c dwarf/Gfde.c dwarf/Gparser.c dwarf/Gpe.c \ - dwarf/Gfind_proc_info-lsb.c \ - dwarf/Gfind_unwind_table.c + dwarf/Gexpr.c \ + dwarf/Gfde.c \ + dwarf/Gfind_proc_info-lsb.c \ + dwarf/Gfind_unwind_table.c \ + dwarf/Gget_proc_info_in_range.c \ + dwarf/Gparser.c \ + dwarf/Gpe.c libunwind_dwarf_generic_la_LIBADD = libunwind-dwarf-common.la libunwind_elf32_la_SOURCES = elf32.c @@ -1559,459 +2152,751 @@ libunwind_elf32_la_LIBADD = $(LIBLZMA) $(LIBZ) libunwind_elf64_la_LIBADD = $(LIBLZMA) $(LIBZ) libunwind_elfxx_la_LIBADD = $(LIBLZMA) $(LIBZ) -libunwind_la_SOURCES_aarch64_common = $(libunwind_la_SOURCES_common) \ - aarch64/is_fpreg.c aarch64/regname.c +@OS_FREEBSD_TRUE@libunwind_la_SOURCES_os = os-freebsd.c +@OS_HPUX_TRUE@libunwind_la_SOURCES_os = os-hpux.c +@OS_LINUX_TRUE@libunwind_la_SOURCES_os = os-linux.c dl-iterate-phdr.c +@OS_QNX_TRUE@libunwind_la_SOURCES_os = os-qnx.c +@OS_SOLARIS_TRUE@libunwind_la_SOURCES_os = os-solaris.c +@OS_HPUX_TRUE@libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_hpux_local) +@OS_LINUX_TRUE@libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_linux_local) +@OS_FREEBSD_TRUE@libunwind_la_SOURCES_aarch64_os = aarch64/Gos-freebsd.c +@OS_LINUX_TRUE@libunwind_la_SOURCES_aarch64_os = aarch64/Gos-linux.c +@OS_QNX_TRUE@libunwind_la_SOURCES_aarch64_os = aarch64/Gos-qnx.c +@OS_FREEBSD_TRUE@libunwind_la_SOURCES_aarch64_os_local = aarch64/Los-freebsd.c aarch64/setcontext.S +@OS_LINUX_TRUE@libunwind_la_SOURCES_aarch64_os_local = aarch64/Los-linux.c +@OS_QNX_TRUE@libunwind_la_SOURCES_aarch64_os_local = aarch64/Los-qnx.c +@OS_FREEBSD_TRUE@libunwind_la_SOURCES_arm_os = arm/Gos-freebsd.c +@OS_LINUX_TRUE@libunwind_la_SOURCES_arm_os = arm/Gos-linux.c +@OS_QNX_TRUE@libunwind_la_SOURCES_arm_os = arm/Gos-other.c +@OS_FREEBSD_TRUE@libunwind_la_SOURCES_arm_os_local = arm/Los-freebsd.c +@OS_LINUX_TRUE@libunwind_la_SOURCES_arm_os_local = arm/Los-linux.c +@OS_QNX_TRUE@libunwind_la_SOURCES_arm_os_local = arm/Los-other.c +@OS_FREEBSD_TRUE@libunwind_la_SOURCES_x86_os = x86/Gos-freebsd.c +@OS_LINUX_TRUE@libunwind_la_SOURCES_x86_os = x86/Gos-linux.c +@OS_FREEBSD_TRUE@libunwind_la_SOURCES_x86_os_local = x86/Los-freebsd.c x86/getcontext-freebsd.S +@OS_LINUX_TRUE@libunwind_la_SOURCES_x86_os_local = x86/Los-linux.c x86/getcontext-linux.S +@OS_FREEBSD_TRUE@libunwind_la_SOURCES_x86_64_os = x86_64/Gos-freebsd.c +@OS_LINUX_TRUE@libunwind_la_SOURCES_x86_64_os = x86_64/Gos-linux.c +@OS_QNX_TRUE@libunwind_la_SOURCES_x86_64_os = x86_64/Gos-qnx.c +@OS_SOLARIS_TRUE@libunwind_la_SOURCES_x86_64_os = x86_64/Gos-solaris.c +@OS_FREEBSD_TRUE@libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-freebsd.c +@OS_LINUX_TRUE@libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-linux.c +@OS_QNX_TRUE@libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-qnx.c +@OS_SOLARIS_TRUE@libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-solaris.c +libunwind_la_SOURCES_aarch64_common = \ + $(libunwind_la_SOURCES_common) \ + aarch64/is_fpreg.c \ + aarch64/regname.c # The list of files that go into libunwind: -libunwind_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \ - $(libunwind_la_SOURCES_local) \ - aarch64/Lapply_reg_state.c aarch64/Lreg_states_iterate.c \ - aarch64/Lcreate_addr_space.c aarch64/Lget_proc_info.c \ - aarch64/Lget_save_loc.c aarch64/Lglobal.c aarch64/Linit.c \ - aarch64/Linit_local.c aarch64/Linit_remote.c \ - aarch64/Lis_signal_frame.c aarch64/Lregs.c aarch64/Lresume.c \ - aarch64/Lstash_frame.c aarch64/Lstep.c aarch64/Ltrace.c \ - aarch64/getcontext.S - -libunwind_aarch64_la_SOURCES_aarch64 = $(libunwind_la_SOURCES_aarch64_common) \ - $(libunwind_la_SOURCES_generic) \ - aarch64/Gapply_reg_state.c aarch64/Greg_states_iterate.c \ - aarch64/Gcreate_addr_space.c aarch64/Gget_proc_info.c \ - aarch64/Gget_save_loc.c aarch64/Gglobal.c aarch64/Ginit.c \ - aarch64/Ginit_local.c aarch64/Ginit_remote.c \ - aarch64/Gis_signal_frame.c aarch64/Gregs.c aarch64/Gresume.c \ - aarch64/Gstash_frame.c aarch64/Gstep.c aarch64/Gtrace.c - -libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common) \ - arm/is_fpreg.c arm/regname.c +@ARCH_AARCH64_TRUE@libunwind_la_SOURCES = \ +@ARCH_AARCH64_TRUE@ $(libunwind_la_SOURCES_aarch64_common) \ +@ARCH_AARCH64_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_AARCH64_TRUE@ $(libunwind_la_SOURCES_aarch64_os_local) \ +@ARCH_AARCH64_TRUE@ aarch64/getcontext.S \ +@ARCH_AARCH64_TRUE@ aarch64/Lapply_reg_state.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lcreate_addr_space.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lget_proc_info.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lget_save_loc.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lglobal.c \ +@ARCH_AARCH64_TRUE@ aarch64/Linit.c \ +@ARCH_AARCH64_TRUE@ aarch64/Linit_local.c \ +@ARCH_AARCH64_TRUE@ aarch64/Linit_remote.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lis_signal_frame.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lregs.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lreg_states_iterate.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lresume.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lstash_frame.c \ +@ARCH_AARCH64_TRUE@ aarch64/Lstep.c \ +@ARCH_AARCH64_TRUE@ aarch64/Ltrace.c # The list of files that go into libunwind: -libunwind_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \ - $(libunwind_la_SOURCES_arm_os_local) \ - $(libunwind_la_SOURCES_local) \ - arm/getcontext.S \ - arm/Lapply_reg_state.c arm/Lreg_states_iterate.c \ - arm/Lcreate_addr_space.c arm/Lget_proc_info.c arm/Lget_save_loc.c \ - arm/Lglobal.c arm/Linit.c arm/Linit_local.c arm/Linit_remote.c \ - arm/Lregs.c arm/Lresume.c arm/Lstep.c \ - arm/Lex_tables.c arm/Lstash_frame.c arm/Ltrace.c +@ARCH_ARM_TRUE@libunwind_la_SOURCES = \ +@ARCH_ARM_TRUE@ $(libunwind_la_SOURCES_arm_common) \ +@ARCH_ARM_TRUE@ $(libunwind_la_SOURCES_arm_os_local) \ +@ARCH_ARM_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_ARM_TRUE@ arm/getcontext.S \ +@ARCH_ARM_TRUE@ arm/Lapply_reg_state.c \ +@ARCH_ARM_TRUE@ arm/Lcreate_addr_space.c \ +@ARCH_ARM_TRUE@ arm/Lex_tables.c \ +@ARCH_ARM_TRUE@ arm/Lget_proc_info.c \ +@ARCH_ARM_TRUE@ arm/Lget_save_loc.c \ +@ARCH_ARM_TRUE@ arm/Lglobal.c arm/Linit.c \ +@ARCH_ARM_TRUE@ arm/Linit_local.c \ +@ARCH_ARM_TRUE@ arm/Linit_remote.c \ +@ARCH_ARM_TRUE@ arm/Lregs.c \ +@ARCH_ARM_TRUE@ arm/Lreg_states_iterate.c \ +@ARCH_ARM_TRUE@ arm/Lresume.c \ +@ARCH_ARM_TRUE@ arm/Lstash_frame.c \ +@ARCH_ARM_TRUE@ arm/Lstep.c \ +@ARCH_ARM_TRUE@ arm/Ltrace.c -# The list of files that go into libunwind-arm: -libunwind_arm_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \ - $(libunwind_la_SOURCES_arm_os) \ - $(libunwind_la_SOURCES_generic) \ - arm/Gapply_reg_state.c arm/Greg_states_iterate.c \ - arm/Gcreate_addr_space.c arm/Gget_proc_info.c arm/Gget_save_loc.c \ - arm/Gglobal.c arm/Ginit.c arm/Ginit_local.c arm/Ginit_remote.c \ - arm/Gregs.c arm/Gresume.c arm/Gstep.c \ - arm/Gex_tables.c arm/Gstash_frame.c arm/Gtrace.c +# The list of files that go into libunwind: +@ARCH_HPPA_TRUE@libunwind_la_SOURCES = \ +@ARCH_HPPA_TRUE@ $(libunwind_la_SOURCES_hppa_common) \ +@ARCH_HPPA_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_HPPA_TRUE@ hppa/getcontext.S \ +@ARCH_HPPA_TRUE@ hppa/Lapply_reg_state.c \ +@ARCH_HPPA_TRUE@ hppa/Lcreate_addr_space.c \ +@ARCH_HPPA_TRUE@ hppa/Lget_proc_info.c \ +@ARCH_HPPA_TRUE@ hppa/Lget_save_loc.c \ +@ARCH_HPPA_TRUE@ hppa/Lglobal.c \ +@ARCH_HPPA_TRUE@ hppa/Linit.c \ +@ARCH_HPPA_TRUE@ hppa/Linit_local.c \ +@ARCH_HPPA_TRUE@ hppa/Linit_remote.c \ +@ARCH_HPPA_TRUE@ hppa/Lis_signal_frame.c \ +@ARCH_HPPA_TRUE@ hppa/Lregs.c \ +@ARCH_HPPA_TRUE@ hppa/Lreg_states_iterate.c \ +@ARCH_HPPA_TRUE@ hppa/Lresume.c \ +@ARCH_HPPA_TRUE@ hppa/Lstep.c \ +@ARCH_HPPA_TRUE@ hppa/setcontext.S -libunwind_la_SOURCES_ia64_common = $(libunwind_la_SOURCES_common) \ - ia64/regname.c -libunwind_la_EXTRAS_ia64 = ia64/mk_cursor_i ia64/mk_Lcursor_i.c \ - ia64/mk_Gcursor_i.c +# The list of files that go into libunwind: +@ARCH_IA64_TRUE@libunwind_la_SOURCES = \ +@ARCH_IA64_TRUE@ $(libunwind_la_SOURCES_ia64_common) \ +@ARCH_IA64_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_IA64_TRUE@ ia64/dyn_info_list.S \ +@ARCH_IA64_TRUE@ ia64/getcontext.S \ +@ARCH_IA64_TRUE@ ia64/Lapply_reg_state.c \ +@ARCH_IA64_TRUE@ ia64/Lcreate_addr_space.c \ +@ARCH_IA64_TRUE@ ia64/Lfind_unwind_table.c \ +@ARCH_IA64_TRUE@ ia64/Lget_proc_info.c \ +@ARCH_IA64_TRUE@ ia64/Lget_save_loc.c \ +@ARCH_IA64_TRUE@ ia64/Lglobal.c \ +@ARCH_IA64_TRUE@ ia64/Linit.c \ +@ARCH_IA64_TRUE@ ia64/Linit_local.c \ +@ARCH_IA64_TRUE@ ia64/Linit_remote.c \ +@ARCH_IA64_TRUE@ ia64/Linstall_cursor.S \ +@ARCH_IA64_TRUE@ ia64/Lis_signal_frame.c \ +@ARCH_IA64_TRUE@ ia64/Lparser.c \ +@ARCH_IA64_TRUE@ ia64/Lrbs.c \ +@ARCH_IA64_TRUE@ ia64/Lregs.c \ +@ARCH_IA64_TRUE@ ia64/Lreg_states_iterate.c \ +@ARCH_IA64_TRUE@ ia64/Lresume.c \ +@ARCH_IA64_TRUE@ ia64/Lscript.c \ +@ARCH_IA64_TRUE@ ia64/Lstep.c \ +@ARCH_IA64_TRUE@ ia64/Ltables.c # The list of files that go into libunwind: -libunwind_la_SOURCES_ia64 = $(libunwind_la_SOURCES_ia64_common) \ - $(libunwind_la_SOURCES_local) \ - \ - ia64/dyn_info_list.S ia64/getcontext.S \ - \ - ia64/Lapply_reg_state.c ia64/Lreg_states_iterate.c \ - ia64/Lcreate_addr_space.c ia64/Lget_proc_info.c ia64/Lget_save_loc.c \ - ia64/Lglobal.c ia64/Linit.c ia64/Linit_local.c ia64/Linit_remote.c \ - ia64/Linstall_cursor.S ia64/Lis_signal_frame.c ia64/Lparser.c \ - ia64/Lrbs.c ia64/Lregs.c ia64/Lresume.c ia64/Lscript.c ia64/Lstep.c \ - ia64/Ltables.c ia64/Lfind_unwind_table.c +@ARCH_LOONGARCH64_TRUE@libunwind_la_SOURCES = \ +@ARCH_LOONGARCH64_TRUE@ $(libunwind_la_SOURCES_loongarch64_common) \ +@ARCH_LOONGARCH64_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/getcontext.S \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lapply_reg_state.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lcreate_addr_space.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lget_proc_info.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lget_save_loc.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lglobal.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Linit.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Linit_local.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Linit_remote.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lis_signal_frame.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lregs.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lreg_states_iterate.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lresume.c \ +@ARCH_LOONGARCH64_TRUE@ loongarch64/Lstep.c -# The list of files that go into libunwind-ia64: -libunwind_ia64_la_SOURCES_ia64 = $(libunwind_la_SOURCES_ia64_common) \ - $(libunwind_la_SOURCES_generic) \ - ia64/Gapply_reg_state.c ia64/Greg_states_iterate.c \ - ia64/Gcreate_addr_space.c ia64/Gget_proc_info.c ia64/Gget_save_loc.c \ - ia64/Gglobal.c ia64/Ginit.c ia64/Ginit_local.c ia64/Ginit_remote.c \ - ia64/Ginstall_cursor.S ia64/Gis_signal_frame.c ia64/Gparser.c \ - ia64/Grbs.c ia64/Gregs.c ia64/Gresume.c ia64/Gscript.c ia64/Gstep.c \ - ia64/Gtables.c ia64/Gfind_unwind_table.c - -libunwind_la_SOURCES_hppa_common = $(libunwind_la_SOURCES_common) \ - hppa/regname.c +# The list of files that go into libunwind: +@ARCH_MIPS_TRUE@libunwind_la_SOURCES = \ +@ARCH_MIPS_TRUE@ $(libunwind_la_SOURCES_mips_common) \ +@ARCH_MIPS_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_MIPS_TRUE@ mips/getcontext.S \ +@ARCH_MIPS_TRUE@ mips/Lapply_reg_state.c \ +@ARCH_MIPS_TRUE@ mips/Lcreate_addr_space.c \ +@ARCH_MIPS_TRUE@ mips/Lget_proc_info.c \ +@ARCH_MIPS_TRUE@ mips/Lget_save_loc.c \ +@ARCH_MIPS_TRUE@ mips/Lglobal.c \ +@ARCH_MIPS_TRUE@ mips/Linit.c \ +@ARCH_MIPS_TRUE@ mips/Linit_local.c \ +@ARCH_MIPS_TRUE@ mips/Linit_remote.c \ +@ARCH_MIPS_TRUE@ mips/Lis_signal_frame.c \ +@ARCH_MIPS_TRUE@ mips/Lregs.c \ +@ARCH_MIPS_TRUE@ mips/Lreg_states_iterate.c \ +@ARCH_MIPS_TRUE@ mips/Lresume.c \ +@ARCH_MIPS_TRUE@ mips/Lstep.c # The list of files that go into libunwind: -libunwind_la_SOURCES_hppa = $(libunwind_la_SOURCES_hppa_common) \ - $(libunwind_la_SOURCES_local) \ - hppa/getcontext.S hppa/setcontext.S \ - hppa/Lapply_reg_state.c hppa/Lreg_states_iterate.c \ - hppa/Lcreate_addr_space.c hppa/Lget_save_loc.c hppa/Lglobal.c \ - hppa/Linit.c hppa/Linit_local.c hppa/Linit_remote.c \ - hppa/Lis_signal_frame.c hppa/Lget_proc_info.c hppa/Lregs.c \ - hppa/Lresume.c hppa/Lstep.c - +@ARCH_PPC32_TRUE@libunwind_la_SOURCES = \ +@ARCH_PPC32_TRUE@ $(libunwind_la_SOURCES_ppc32_common) \ +@ARCH_PPC32_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_PPC32_TRUE@ $(libunwind_la_SOURCES_ppc) \ +@ARCH_PPC32_TRUE@ ppc32/Lapply_reg_state.c \ +@ARCH_PPC32_TRUE@ ppc32/Lcreate_addr_space.c \ +@ARCH_PPC32_TRUE@ ppc32/Lglobal.c \ +@ARCH_PPC32_TRUE@ ppc32/Linit.c \ +@ARCH_PPC32_TRUE@ ppc32/Lregs.c \ +@ARCH_PPC32_TRUE@ ppc32/Lreg_states_iterate.c \ +@ARCH_PPC32_TRUE@ ppc32/Lresume.c \ +@ARCH_PPC32_TRUE@ ppc32/Lstep.c -# The list of files that go into libunwind-hppa: -libunwind_hppa_la_SOURCES_hppa = $(libunwind_la_SOURCES_hppa_common) \ - $(libunwind_la_SOURCES_generic) \ - hppa/Gapply_reg_state.c hppa/Greg_states_iterate.c \ - hppa/Gcreate_addr_space.c hppa/Gget_save_loc.c hppa/Gglobal.c \ - hppa/Ginit.c hppa/Ginit_local.c hppa/Ginit_remote.c \ - hppa/Gis_signal_frame.c hppa/Gget_proc_info.c hppa/Gregs.c \ - hppa/Gresume.c hppa/Gstep.c -libunwind_la_SOURCES_mips_common = $(libunwind_la_SOURCES_common) \ - mips/is_fpreg.c mips/regname.c +# The list of files that go into libunwind: +@ARCH_PPC64_TRUE@libunwind_la_SOURCES = \ +@ARCH_PPC64_TRUE@ $(libunwind_la_SOURCES_ppc64_common) \ +@ARCH_PPC64_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_PPC64_TRUE@ $(libunwind_la_SOURCES_ppc) \ +@ARCH_PPC64_TRUE@ ppc64/Lapply_reg_state.c \ +@ARCH_PPC64_TRUE@ ppc64/Lcreate_addr_space.c \ +@ARCH_PPC64_TRUE@ ppc64/Lglobal.c \ +@ARCH_PPC64_TRUE@ ppc64/Linit.c \ +@ARCH_PPC64_TRUE@ ppc64/Lregs.c \ +@ARCH_PPC64_TRUE@ ppc64/Lreg_states_iterate.c \ +@ARCH_PPC64_TRUE@ ppc64/Lresume.c \ +@ARCH_PPC64_TRUE@ ppc64/Lstep.c # The list of files that go into libunwind: -libunwind_la_SOURCES_mips = $(libunwind_la_SOURCES_mips_common) \ - $(libunwind_la_SOURCES_local) \ - mips/getcontext.S \ - mips/Lapply_reg_state.c mips/Lreg_states_iterate.c \ - mips/Lcreate_addr_space.c mips/Lget_proc_info.c mips/Lget_save_loc.c \ - mips/Lglobal.c mips/Linit.c mips/Linit_local.c mips/Linit_remote.c \ - mips/Lis_signal_frame.c mips/Lregs.c mips/Lresume.c mips/Lstep.c - -libunwind_mips_la_SOURCES_mips = $(libunwind_la_SOURCES_mips_common) \ - $(libunwind_la_SOURCES_generic) \ - mips/Gapply_reg_state.c mips/Greg_states_iterate.c \ - mips/Gcreate_addr_space.c mips/Gget_proc_info.c mips/Gget_save_loc.c \ - mips/Gglobal.c mips/Ginit.c mips/Ginit_local.c mips/Ginit_remote.c \ - mips/Gis_signal_frame.c mips/Gregs.c mips/Gresume.c mips/Gstep.c +@ARCH_RISCV_TRUE@libunwind_la_SOURCES = \ +@ARCH_RISCV_TRUE@ $(libunwind_la_SOURCES_riscv_common) \ +@ARCH_RISCV_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_RISCV_TRUE@ riscv/getcontext.S \ +@ARCH_RISCV_TRUE@ riscv/Lapply_reg_state.c \ +@ARCH_RISCV_TRUE@ riscv/Lcreate_addr_space.c \ +@ARCH_RISCV_TRUE@ riscv/Lget_proc_info.c \ +@ARCH_RISCV_TRUE@ riscv/Lget_save_loc.c \ +@ARCH_RISCV_TRUE@ riscv/Lglobal.c \ +@ARCH_RISCV_TRUE@ riscv/Linit.c \ +@ARCH_RISCV_TRUE@ riscv/Linit_local.c \ +@ARCH_RISCV_TRUE@ riscv/Linit_remote.c \ +@ARCH_RISCV_TRUE@ riscv/Lis_signal_frame.c \ +@ARCH_RISCV_TRUE@ riscv/Lregs.c \ +@ARCH_RISCV_TRUE@ riscv/Lreg_states_iterate.c \ +@ARCH_RISCV_TRUE@ riscv/Lresume.c \ +@ARCH_RISCV_TRUE@ riscv/Lstep.c \ +@ARCH_RISCV_TRUE@ riscv/setcontext.S + -libunwind_la_SOURCES_tilegx_common = $(libunwind_la_SOURCES_common) \ - tilegx/is_fpreg.c tilegx/regname.c +# The list of files that go into libunwind: +@ARCH_S390X_TRUE@libunwind_la_SOURCES = \ +@ARCH_S390X_TRUE@ $(libunwind_la_SOURCES_s390x_common) \ +@ARCH_S390X_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_S390X_TRUE@ s390x/getcontext.S \ +@ARCH_S390X_TRUE@ s390x/Lapply_reg_state.c \ +@ARCH_S390X_TRUE@ s390x/Lcreate_addr_space.c \ +@ARCH_S390X_TRUE@ s390x/Lget_proc_info.c \ +@ARCH_S390X_TRUE@ s390x/Lget_save_loc.c \ +@ARCH_S390X_TRUE@ s390x/Lglobal.c \ +@ARCH_S390X_TRUE@ s390x/Linit.c \ +@ARCH_S390X_TRUE@ s390x/Linit_local.c \ +@ARCH_S390X_TRUE@ s390x/Linit_remote.c \ +@ARCH_S390X_TRUE@ s390x/Lis_signal_frame.c \ +@ARCH_S390X_TRUE@ s390x/Lregs.c \ +@ARCH_S390X_TRUE@ s390x/Lreg_states_iterate.c \ +@ARCH_S390X_TRUE@ s390x/Lresume.c \ +@ARCH_S390X_TRUE@ s390x/Lstep.c \ +@ARCH_S390X_TRUE@ s390x/setcontext.S # The list of files that go into libunwind: -libunwind_la_SOURCES_tilegx = $(libunwind_la_SOURCES_tilegx_common) \ - $(libunwind_la_SOURCES_local) \ - tilegx/getcontext.S \ - tilegx/Lapply_reg_state.c tilegx/Lreg_states_iterate.c \ - tilegx/Lcreate_addr_space.c tilegx/Lget_proc_info.c tilegx/Lget_save_loc.c \ - tilegx/Lglobal.c tilegx/Linit.c tilegx/Linit_local.c tilegx/Linit_remote.c \ - tilegx/Lis_signal_frame.c tilegx/Lregs.c tilegx/Lresume.c tilegx/Lstep.c - -libunwind_tilegx_la_SOURCES_tilegx = $(libunwind_la_SOURCES_tilegx_common) \ - $(libunwind_la_SOURCES_generic) \ - tilegx/Gapply_reg_state.c tilegx/Greg_states_iterate.c \ - tilegx/Gcreate_addr_space.c tilegx/Gget_proc_info.c tilegx/Gget_save_loc.c \ - tilegx/Gglobal.c tilegx/Ginit.c tilegx/Ginit_local.c tilegx/Ginit_remote.c \ - tilegx/Gis_signal_frame.c tilegx/Gregs.c tilegx/Gresume.c tilegx/Gstep.c +@ARCH_SH_TRUE@libunwind_la_SOURCES = \ +@ARCH_SH_TRUE@ $(libunwind_la_SOURCES_sh_common) \ +@ARCH_SH_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_SH_TRUE@ sh/Lapply_reg_state.c \ +@ARCH_SH_TRUE@ sh/Lcreate_addr_space.c \ +@ARCH_SH_TRUE@ sh/Lget_proc_info.c \ +@ARCH_SH_TRUE@ sh/Lget_save_loc.c \ +@ARCH_SH_TRUE@ sh/Lglobal.c \ +@ARCH_SH_TRUE@ sh/Linit.c \ +@ARCH_SH_TRUE@ sh/Linit_local.c \ +@ARCH_SH_TRUE@ sh/Linit_remote.c \ +@ARCH_SH_TRUE@ sh/Lis_signal_frame.c \ +@ARCH_SH_TRUE@ sh/Lregs.c \ +@ARCH_SH_TRUE@ sh/Lreg_states_iterate.c \ +@ARCH_SH_TRUE@ sh/Lresume.c \ +@ARCH_SH_TRUE@ sh/Lstep.c -libunwind_la_SOURCES_riscv_common = $(libunwind_la_SOURCES_common) \ - riscv/is_fpreg.c riscv/regname.c + +# The list of files that go into libunwind: +@ARCH_X86_64_TRUE@libunwind_la_SOURCES = \ +@ARCH_X86_64_TRUE@ $(libunwind_la_SOURCES_x86_64_common) \ +@ARCH_X86_64_TRUE@ $(libunwind_la_SOURCES_x86_64_os_local)\ +@ARCH_X86_64_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_X86_64_TRUE@ x86_64/getcontext.S \ +@ARCH_X86_64_TRUE@ x86_64/Lapply_reg_state.c \ +@ARCH_X86_64_TRUE@ x86_64/Lcreate_addr_space.c \ +@ARCH_X86_64_TRUE@ x86_64/Lget_proc_info.c \ +@ARCH_X86_64_TRUE@ x86_64/Lget_save_loc.c \ +@ARCH_X86_64_TRUE@ x86_64/Lglobal.c \ +@ARCH_X86_64_TRUE@ x86_64/Linit.c \ +@ARCH_X86_64_TRUE@ x86_64/Linit_local.c \ +@ARCH_X86_64_TRUE@ x86_64/Linit_remote.c \ +@ARCH_X86_64_TRUE@ x86_64/Lregs.c \ +@ARCH_X86_64_TRUE@ x86_64/Lreg_states_iterate.c \ +@ARCH_X86_64_TRUE@ x86_64/Lresume.c \ +@ARCH_X86_64_TRUE@ x86_64/Lstash_frame.c \ +@ARCH_X86_64_TRUE@ x86_64/Lstep.c \ +@ARCH_X86_64_TRUE@ x86_64/Ltrace.c \ +@ARCH_X86_64_TRUE@ x86_64/setcontext.S # The list of files that go into libunwind: -libunwind_la_SOURCES_riscv = $(libunwind_la_SOURCES_riscv_common) \ - $(libunwind_la_SOURCES_local) \ - riscv/getcontext.S riscv/setcontext.S \ - riscv/Lapply_reg_state.c riscv/Lreg_states_iterate.c \ - riscv/Lcreate_addr_space.c riscv/Lget_proc_info.c riscv/Lget_save_loc.c \ - riscv/Lglobal.c riscv/Linit.c riscv/Linit_local.c riscv/Linit_remote.c \ - riscv/Lis_signal_frame.c riscv/Lregs.c riscv/Lresume.c riscv/Lstep.c - -libunwind_riscv_la_SOURCES_riscv = $(libunwind_la_SOURCES_riscv_common) \ - $(libunwind_la_SOURCES_generic) \ - riscv/Gapply_reg_state.c riscv/Greg_states_iterate.c \ - riscv/Gcreate_addr_space.c riscv/Gget_proc_info.c riscv/Gget_save_loc.c \ - riscv/Gglobal.c riscv/Ginit.c riscv/Ginit_local.c riscv/Ginit_remote.c \ - riscv/Gis_signal_frame.c riscv/Gregs.c riscv/Gresume.c riscv/Gstep.c +@ARCH_X86_TRUE@libunwind_la_SOURCES = \ +@ARCH_X86_TRUE@ $(libunwind_la_SOURCES_x86_common) \ +@ARCH_X86_TRUE@ $(libunwind_la_SOURCES_x86_os_local) \ +@ARCH_X86_TRUE@ $(libunwind_la_SOURCES_local) \ +@ARCH_X86_TRUE@ x86/Lapply_reg_state.c \ +@ARCH_X86_TRUE@ x86/Lcreate_addr_space.c \ +@ARCH_X86_TRUE@ x86/Lget_proc_info.c \ +@ARCH_X86_TRUE@ x86/Lget_save_loc.c \ +@ARCH_X86_TRUE@ x86/Lglobal.c \ +@ARCH_X86_TRUE@ x86/Linit.c \ +@ARCH_X86_TRUE@ x86/Linit_local.c \ +@ARCH_X86_TRUE@ x86/Linit_remote.c \ +@ARCH_X86_TRUE@ x86/Lregs.c \ +@ARCH_X86_TRUE@ x86/Lreg_states_iterate.c \ +@ARCH_X86_TRUE@ x86/Lresume.c \ +@ARCH_X86_TRUE@ x86/Lstep.c + +libunwind_aarch64_la_SOURCES = \ + $(libunwind_la_SOURCES_aarch64_common) \ + $(libunwind_la_SOURCES_generic) \ + $(libunwind_la_SOURCES_aarch64_os) \ + aarch64/Gapply_reg_state.c \ + aarch64/Gcreate_addr_space.c \ + aarch64/Gget_proc_info.c \ + aarch64/Gget_save_loc.c \ + aarch64/Gglobal.c \ + aarch64/Ginit.c \ + aarch64/Ginit_local.c \ + aarch64/Ginit_remote.c \ + aarch64/Gis_signal_frame.c \ + aarch64/Gregs.c \ + aarch64/Greg_states_iterate.c \ + aarch64/Gresume.c \ + aarch64/Gstash_frame.c \ + aarch64/Gstep.c \ + aarch64/Gtrace.c + +libunwind_aarch64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_aarch64_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) -libunwind_la_SOURCES_loongarch64_common = $(libunwind_la_SOURCES_common) \ - loongarch64/is_fpreg.c loongarch64/regname.c +libunwind_la_SOURCES_arm_common = \ + $(libunwind_la_SOURCES_common) \ + arm/is_fpreg.c arm/regname.c -# The list of files that go into libunwind: -libunwind_la_SOURCES_loongarch64 = $(libunwind_la_SOURCES_loongarch64_common) \ - $(libunwind_la_SOURCES_local) \ - loongarch64/getcontext.S \ - loongarch64/Lapply_reg_state.c loongarch64/Lreg_states_iterate.c \ - loongarch64/Lcreate_addr_space.c loongarch64/Lget_proc_info.c \ - loongarch64/Lget_save_loc.c loongarch64/Lglobal.c loongarch64/Linit.c \ - loongarch64/Linit_local.c loongarch64/Linit_remote.c \ - loongarch64/Lis_signal_frame.c loongarch64/Lregs.c \ - loongarch64/Lresume.c loongarch64/Lstep.c - -libunwind_loongarch64_la_SOURCES_loongarch64 = $(libunwind_la_SOURCES_loongarch64_common) \ - $(libunwind_la_SOURCES_generic) \ - loongarch64/Gapply_reg_state.c loongarch64/Greg_states_iterate.c \ - loongarch64/Gcreate_addr_space.c loongarch64/Gget_proc_info.c \ - loongarch64/Gget_save_loc.c loongarch64/Gglobal.c loongarch64/Ginit.c \ - loongarch64/Ginit_local.c loongarch64/Ginit_remote.c \ - loongarch64/Gis_signal_frame.c loongarch64/Gregs.c \ - loongarch64/Gresume.c loongarch64/Gstep.c +# The list of files that go into libunwind-arm: +libunwind_arm_la_SOURCES = \ + $(libunwind_la_SOURCES_arm_common) \ + $(libunwind_la_SOURCES_arm_os) \ + $(libunwind_la_SOURCES_generic) \ + arm/Gapply_reg_state.c \ + arm/Gcreate_addr_space.c \ + arm/Gex_tables.c \ + arm/Gget_proc_info.c \ + arm/Gget_save_loc.c \ + arm/Gglobal.c \ + arm/Ginit.c \ + arm/Ginit_local.c \ + arm/Ginit_remote.c \ + arm/Gregs.c \ + arm/Greg_states_iterate.c \ + arm/Gresume.c \ + arm/Gstash_frame.c \ + arm/Gstep.c \ + arm/Gtrace.c -libunwind_la_SOURCES_x86_common = $(libunwind_la_SOURCES_common) \ - x86/is_fpreg.c x86/regname.c +libunwind_arm_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_arm_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) +libunwind_la_SOURCES_hppa_common = \ + $(libunwind_la_SOURCES_common) \ + hppa/regname.c -# The list of files that go into libunwind: -libunwind_la_SOURCES_x86 = $(libunwind_la_SOURCES_x86_common) \ - $(libunwind_la_SOURCES_x86_os_local) \ - $(libunwind_la_SOURCES_local) \ - x86/Lapply_reg_state.c x86/Lreg_states_iterate.c \ - x86/Lcreate_addr_space.c x86/Lget_save_loc.c x86/Lglobal.c \ - x86/Linit.c x86/Linit_local.c x86/Linit_remote.c \ - x86/Lget_proc_info.c x86/Lregs.c \ - x86/Lresume.c x86/Lstep.c +# The list of files that go into libunwind-hppa: +libunwind_hppa_la_SOURCES = \ + $(libunwind_la_SOURCES_hppa_common) \ + $(libunwind_la_SOURCES_generic) \ + hppa/Gapply_reg_state.c \ + hppa/Gcreate_addr_space.c \ + hppa/Gget_proc_info.c \ + hppa/Gget_save_loc.c \ + hppa/Gglobal.c \ + hppa/Ginit.c \ + hppa/Ginit_local.c \ + hppa/Ginit_remote.c \ + hppa/Gis_signal_frame.c \ + hppa/Gregs.c \ + hppa/Greg_states_iterate.c \ + hppa/Gresume.c \ + hppa/Gstep.c + +libunwind_hppa_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_hppa_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) -# The list of files that go into libunwind-x86: -libunwind_x86_la_SOURCES_x86 = $(libunwind_la_SOURCES_x86_common) \ - $(libunwind_la_SOURCES_x86_os) \ - $(libunwind_la_SOURCES_generic) \ - x86/Gapply_reg_state.c x86/Greg_states_iterate.c \ - x86/Gcreate_addr_space.c x86/Gget_save_loc.c x86/Gglobal.c \ - x86/Ginit.c x86/Ginit_local.c x86/Ginit_remote.c \ - x86/Gget_proc_info.c x86/Gregs.c \ - x86/Gresume.c x86/Gstep.c +libunwind_la_SOURCES_ia64_common = \ + $(libunwind_la_SOURCES_common) \ + ia64/regname.c -libunwind_la_SOURCES_x86_64_common = $(libunwind_la_SOURCES_common) \ - x86_64/is_fpreg.c x86_64/regname.c +libunwind_la_EXTRAS_ia64 = \ + ia64/mk_cursor_i \ + ia64/mk_Gcursor_i.c \ + ia64/mk_Lcursor_i.c +@ARCH_IA64_TRUE@BUILT_SOURCES = Gcursor_i.h Lcursor_i.h -# The list of files that go into libunwind: -libunwind_la_SOURCES_x86_64 = $(libunwind_la_SOURCES_x86_64_common) \ - $(libunwind_la_SOURCES_x86_64_os_local) \ - $(libunwind_la_SOURCES_local) \ - x86_64/setcontext.S \ - x86_64/Lapply_reg_state.c x86_64/Lreg_states_iterate.c \ - x86_64/Lcreate_addr_space.c x86_64/Lget_save_loc.c x86_64/Lglobal.c \ - x86_64/Linit.c x86_64/Linit_local.c x86_64/Linit_remote.c \ - x86_64/Lget_proc_info.c x86_64/Lregs.c x86_64/Lresume.c \ - x86_64/Lstash_frame.c x86_64/Lstep.c x86_64/Ltrace.c x86_64/getcontext.S +# The list of files that go into libunwind-ia64: +libunwind_ia64_la_SOURCES = \ + $(libunwind_la_SOURCES_ia64_common) \ + $(libunwind_la_SOURCES_generic) \ + ia64/Gapply_reg_state.c \ + ia64/Gcreate_addr_space.c \ + ia64/Gfind_unwind_table.c \ + ia64/Gget_proc_info.c \ + ia64/Gget_save_loc.c \ + ia64/Gglobal.c \ + ia64/Ginit.c \ + ia64/Ginit_local.c \ + ia64/Ginit_remote.c \ + ia64/Ginstall_cursor.S \ + ia64/Gis_signal_frame.c \ + ia64/Gparser.c \ + ia64/Grbs.c \ + ia64/Gregs.c \ + ia64/Greg_states_iterate.c \ + ia64/Gresume.c \ + ia64/Gscript.c \ + ia64/Gstep.c \ + ia64/Gtables.c + +libunwind_ia64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_ia64_la_LIBADD = \ + libunwind-elf64.la \ + $(libunwind_libadd) + +libunwind_la_SOURCES_loongarch64_common = \ + $(libunwind_la_SOURCES_common) \ + loongarch64/is_fpreg.c \ + loongarch64/regname.c + +libunwind_loongarch64_la_SOURCES = \ + $(libunwind_la_SOURCES_loongarch64_common) \ + $(libunwind_la_SOURCES_generic) \ + loongarch64/Gapply_reg_state.c \ + loongarch64/Gcreate_addr_space.c \ + loongarch64/Gget_proc_info.c \ + loongarch64/Gget_save_loc.c \ + loongarch64/Gglobal.c \ + loongarch64/Ginit.c \ + loongarch64/Ginit_local.c \ + loongarch64/Ginit_remote.c \ + loongarch64/Gis_signal_frame.c \ + loongarch64/Gregs.c \ + loongarch64/Greg_states_iterate.c \ + loongarch64/Gresume.c \ + loongarch64/Gstep.c + +libunwind_loongarch64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_loongarch64_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) + +libunwind_la_SOURCES_mips_common = \ + $(libunwind_la_SOURCES_common) \ + mips/is_fpreg.c \ + mips/regname.c + +libunwind_mips_la_SOURCES = \ + $(libunwind_la_SOURCES_mips_common) \ + $(libunwind_la_SOURCES_generic) \ + mips/Gapply_reg_state.c \ + mips/Gcreate_addr_space.c \ + mips/Gget_proc_info.c \ + mips/Gget_save_loc.c \ + mips/Gglobal.c \ + mips/Ginit.c \ + mips/Ginit_local.c \ + mips/Ginit_remote.c \ + mips/Gis_signal_frame.c \ + mips/Gregs.c \ + mips/Greg_states_iterate.c \ + mips/Gresume.c \ + mips/Gstep.c +libunwind_mips_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) -# The list of files that go into libunwind-x86_64: -libunwind_x86_64_la_SOURCES_x86_64 = $(libunwind_la_SOURCES_x86_64_common) \ - $(libunwind_la_SOURCES_x86_64_os) \ - $(libunwind_la_SOURCES_generic) \ - x86_64/Gapply_reg_state.c x86_64/Greg_states_iterate.c \ - x86_64/Gcreate_addr_space.c x86_64/Gget_save_loc.c x86_64/Gglobal.c \ - x86_64/Ginit.c x86_64/Ginit_local.c x86_64/Ginit_remote.c \ - x86_64/Gget_proc_info.c x86_64/Gregs.c x86_64/Gresume.c \ - x86_64/Gstash_frame.c x86_64/Gstep.c x86_64/Gtrace.c +libunwind_mips_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elfxx.la \ + $(libunwind_libadd) +### target PowerPC: # The list of local files that go to Power 64 and 32: libunwind_la_SOURCES_ppc = \ - ppc/Lget_proc_info.c ppc/Lget_save_loc.c ppc/Linit_local.c \ - ppc/Linit_remote.c ppc/Lis_signal_frame.c + ppc/Lget_proc_info.c \ + ppc/Lget_save_loc.c \ + ppc/Linit_local.c \ + ppc/Linit_remote.c \ + ppc/Lis_signal_frame.c # The list of generic files that go to Power 64 and 32: libunwind_ppc_la_SOURCES_ppc_generic = \ - ppc/Gget_proc_info.c ppc/Gget_save_loc.c ppc/Ginit_local.c \ - ppc/Ginit_remote.c ppc/Gis_signal_frame.c - -libunwind_la_SOURCES_ppc32_common = $(libunwind_la_SOURCES_common) \ - ppc32/is_fpreg.c ppc32/regname.c ppc32/get_func_addr.c - - -# The list of files that go into libunwind: -libunwind_la_SOURCES_ppc32 = $(libunwind_la_SOURCES_ppc32_common) \ - $(libunwind_la_SOURCES_local) \ - $(libunwind_la_SOURCES_ppc) \ - ppc32/Lapply_reg_state.c ppc32/Lreg_states_iterate.c \ - ppc32/Lcreate_addr_space.c \ - ppc32/Lglobal.c ppc32/Linit.c \ - ppc32/Lregs.c ppc32/Lresume.c ppc32/Lstep.c + ppc/Gget_proc_info.c \ + ppc/Gget_save_loc.c \ + ppc/Ginit_local.c \ + ppc/Ginit_remote.c \ + ppc/Gis_signal_frame.c + +libunwind_la_SOURCES_ppc32_common = \ + $(libunwind_la_SOURCES_common) \ + ppc32/get_func_addr.c \ + ppc32/is_fpreg.c \ + ppc32/regname.c # The list of files that go into libunwind-ppc32: -libunwind_ppc32_la_SOURCES_ppc32 = $(libunwind_la_SOURCES_ppc32_common) \ - $(libunwind_la_SOURCES_generic) \ - $(libunwind_ppc_la_SOURCES_ppc_generic) \ - ppc32/Gapply_reg_state.c ppc32/Greg_states_iterate.c \ - ppc32/Gcreate_addr_space.c \ - ppc32/Gglobal.c ppc32/Ginit.c \ - ppc32/Gregs.c ppc32/Gresume.c ppc32/Gstep.c - -libunwind_la_SOURCES_ppc64_common = $(libunwind_la_SOURCES_common) \ - ppc64/is_fpreg.c ppc64/regname.c ppc64/get_func_addr.c - - -# The list of files that go into libunwind: -libunwind_la_SOURCES_ppc64 = $(libunwind_la_SOURCES_ppc64_common) \ - $(libunwind_la_SOURCES_local) \ - $(libunwind_la_SOURCES_ppc) \ - ppc64/Lapply_reg_state.c ppc64/Lreg_states_iterate.c \ - ppc64/Lcreate_addr_space.c \ - ppc64/Lglobal.c ppc64/Linit.c \ - ppc64/Lregs.c ppc64/Lresume.c ppc64/Lstep.c +libunwind_ppc32_la_SOURCES = \ + $(libunwind_la_SOURCES_ppc32_common) \ + $(libunwind_la_SOURCES_generic) \ + $(libunwind_ppc_la_SOURCES_ppc_generic)\ + ppc32/Gapply_reg_state.c \ + ppc32/Gcreate_addr_space.c \ + ppc32/Gglobal.c \ + ppc32/Ginit.c \ + ppc32/Gregs.c \ + ppc32/Greg_states_iterate.c \ + ppc32/Gresume.c \ + ppc32/Gstep.c + +libunwind_ppc32_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_ppc32_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) + +libunwind_la_SOURCES_ppc64_common = \ + $(libunwind_la_SOURCES_common) \ + ppc64/get_func_addr.c \ + ppc64/is_fpreg.c \ + ppc64/regname.c # The list of files that go into libunwind-ppc64: -libunwind_ppc64_la_SOURCES_ppc64 = $(libunwind_la_SOURCES_ppc64_common) \ - $(libunwind_la_SOURCES_generic) \ - $(libunwind_ppc_la_SOURCES_ppc_generic) \ - ppc64/Gapply_reg_state.c ppc64/Greg_states_iterate.c \ - ppc64/Gcreate_addr_space.c \ - ppc64/Gglobal.c ppc64/Ginit.c \ - ppc64/Gregs.c ppc64/Gresume.c ppc64/Gstep.c +libunwind_ppc64_la_SOURCES = \ + $(libunwind_la_SOURCES_ppc64_common) \ + $(libunwind_la_SOURCES_generic) \ + $(libunwind_ppc_la_SOURCES_ppc_generic)\ + ppc64/Gapply_reg_state.c \ + ppc64/Gcreate_addr_space.c \ + ppc64/Gglobal.c \ + ppc64/Ginit.c \ + ppc64/Gregs.c \ + ppc64/Greg_states_iterate.c \ + ppc64/Gresume.c \ + ppc64/Gstep.c + +libunwind_ppc64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_ppc64_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) + +libunwind_la_SOURCES_riscv_common = \ + $(libunwind_la_SOURCES_common) \ + riscv/is_fpreg.c \ + riscv/regname.c + +libunwind_riscv_la_SOURCES = \ + $(libunwind_la_SOURCES_riscv_common) \ + $(libunwind_la_SOURCES_generic) \ + riscv/Gapply_reg_state.c \ + riscv/Gcreate_addr_space.c \ + riscv/Gget_proc_info.c \ + riscv/Gget_save_loc.c \ + riscv/Gglobal.c \ + riscv/Ginit.c \ + riscv/Ginit_local.c \ + riscv/Ginit_remote.c \ + riscv/Gis_signal_frame.c \ + riscv/Gregs.c \ + riscv/Greg_states_iterate.c \ + riscv/Gresume.c \ + riscv/Gstep.c -libunwind_la_SOURCES_sh_common = $(libunwind_la_SOURCES_common) \ - sh/is_fpreg.c sh/regname.c +libunwind_riscv_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_riscv_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) + +libunwind_la_SOURCES_s390x_common = \ + $(libunwind_la_SOURCES_common) \ + s390x/is_fpreg.c \ + s390x/regname.c -# The list of files that go into libunwind: -libunwind_la_SOURCES_sh = $(libunwind_la_SOURCES_sh_common) \ - $(libunwind_la_SOURCES_local) \ - sh/Lapply_reg_state.c sh/Lreg_states_iterate.c \ - sh/Lcreate_addr_space.c sh/Lget_proc_info.c sh/Lget_save_loc.c \ - sh/Lglobal.c sh/Linit.c sh/Linit_local.c sh/Linit_remote.c \ - sh/Lis_signal_frame.c sh/Lregs.c sh/Lresume.c sh/Lstep.c - -libunwind_sh_la_SOURCES_sh = $(libunwind_la_SOURCES_sh_common) \ - $(libunwind_la_SOURCES_generic) \ - sh/Gapply_reg_state.c sh/Greg_states_iterate.c \ - sh/Gcreate_addr_space.c sh/Gget_proc_info.c sh/Gget_save_loc.c \ - sh/Gglobal.c sh/Ginit.c sh/Ginit_local.c sh/Ginit_remote.c \ - sh/Gis_signal_frame.c sh/Gregs.c sh/Gresume.c sh/Gstep.c +# The list of files that go into libunwind-s390x: +libunwind_s390x_la_SOURCES = \ + $(libunwind_la_SOURCES_s390x_common) \ + $(libunwind_la_SOURCES_generic) \ + s390x/Gapply_reg_state.c \ + s390x/Gcreate_addr_space.c \ + s390x/Gget_proc_info.c \ + s390x/Gget_save_loc.c \ + s390x/Gglobal.c \ + s390x/Ginit.c \ + s390x/Ginit_local.c \ + s390x/Ginit_remote.c \ + s390x/Gis_signal_frame.c \ + s390x/Gregs.c \ + s390x/Greg_states_iterate.c \ + s390x/Gresume.c \ + s390x/Gstep.c + +libunwind_s390x_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_s390x_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) + +libunwind_la_SOURCES_sh_common = \ + $(libunwind_la_SOURCES_common) \ + sh/is_fpreg.c \ + sh/regname.c + +libunwind_sh_la_SOURCES = \ + $(libunwind_la_SOURCES_sh_common) \ + $(libunwind_la_SOURCES_generic) \ + sh/Gapply_reg_state.c \ + sh/Gcreate_addr_space.c \ + sh/Gget_proc_info.c \ + sh/Gget_save_loc.c \ + sh/Gglobal.c \ + sh/Ginit.c \ + sh/Ginit_local.c \ + sh/Ginit_remote.c \ + sh/Gis_signal_frame.c \ + sh/Gregs.c \ + sh/Greg_states_iterate.c \ + sh/Gresume.c \ + sh/Gstep.c + +libunwind_sh_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_sh_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) + +libunwind_la_SOURCES_x86_common = \ + $(libunwind_la_SOURCES_common) \ + x86/is_fpreg.c \ + x86/regname.c -libunwind_la_SOURCES_s390x_common = $(libunwind_la_SOURCES_common) \ - s390x/is_fpreg.c s390x/regname.c +# The list of files that go into libunwind-x86: +libunwind_x86_la_SOURCES = \ + $(libunwind_la_SOURCES_x86_common) \ + $(libunwind_la_SOURCES_x86_os) \ + $(libunwind_la_SOURCES_generic) \ + x86/Gapply_reg_state.c \ + x86/Gcreate_addr_space.c \ + x86/Gget_proc_info.c \ + x86/Gget_save_loc.c \ + x86/Gglobal.c \ + x86/Ginit.c \ + x86/Ginit_local.c \ + x86/Ginit_remote.c \ + x86/Gregs.c \ + x86/Greg_states_iterate.c \ + x86/Gresume.c \ + x86/Gstep.c + +libunwind_x86_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_x86_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf32.la \ + $(libunwind_libadd) + +libunwind_la_SOURCES_x86_64_common = \ + $(libunwind_la_SOURCES_common) \ + x86_64/is_fpreg.c \ + x86_64/regname.c -# The list of files that go into libunwind: -libunwind_la_SOURCES_s390x = $(libunwind_la_SOURCES_s390x_common) \ - $(libunwind_la_SOURCES_local) \ - s390x/Lapply_reg_state.c s390x/Lreg_states_iterate.c \ - s390x/Lcreate_addr_space.c s390x/Lget_save_loc.c s390x/Lglobal.c \ - s390x/Linit.c s390x/Linit_local.c s390x/Linit_remote.c \ - s390x/Lget_proc_info.c s390x/Lregs.c s390x/Lresume.c \ - s390x/Lis_signal_frame.c s390x/Lstep.c \ - s390x/getcontext.S s390x/setcontext.S +# The list of files that go into libunwind-x86_64: +libunwind_x86_64_la_SOURCES = \ + $(libunwind_la_SOURCES_x86_64_common) \ + $(libunwind_la_SOURCES_x86_64_os) \ + $(libunwind_la_SOURCES_generic) \ + x86_64/Gapply_reg_state.c \ + x86_64/Gcreate_addr_space.c \ + x86_64/Gget_proc_info.c \ + x86_64/Gget_save_loc.c \ + x86_64/Gglobal.c \ + x86_64/Ginit.c \ + x86_64/Ginit_local.c \ + x86_64/Ginit_remote.c \ + x86_64/Gregs.c \ + x86_64/Greg_states_iterate.c \ + x86_64/Gresume.c \ + x86_64/Gstash_frame.c \ + x86_64/Gstep.c \ + x86_64/Gtrace.c + +libunwind_x86_64_la_LDFLAGS = \ + $(COMMON_SO_LDFLAGS) \ + -version-info $(SOVERSION) + +libunwind_x86_64_la_LIBADD = \ + libunwind-dwarf-generic.la \ + libunwind-elf64.la \ + $(libunwind_libadd) -# The list of files that go into libunwind-s390x: -libunwind_s390x_la_SOURCES_s390x = $(libunwind_la_SOURCES_s390x_common) \ - $(libunwind_la_SOURCES_generic) \ - s390x/Gapply_reg_state.c s390x/Greg_states_iterate.c \ - s390x/Gcreate_addr_space.c s390x/Gget_save_loc.c s390x/Gglobal.c \ - s390x/Ginit.c s390x/Ginit_local.c s390x/Ginit_remote.c \ - s390x/Gget_proc_info.c s390x/Gregs.c s390x/Gresume.c \ - s390x/Gis_signal_frame.c s390x/Gstep.c - -@OS_FREEBSD_TRUE@libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_freebsd) -@OS_HPUX_TRUE@libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_hpux) -@OS_LINUX_TRUE@libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_linux) -@OS_QNX_TRUE@libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_qnx) -@OS_SOLARIS_TRUE@libunwind_la_SOURCES_os = $(libunwind_la_SOURCES_os_solaris) -@OS_FREEBSD_TRUE@libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_freebsd_local) -@OS_HPUX_TRUE@libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_hpux_local) -@OS_LINUX_TRUE@libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_linux_local) -@OS_QNX_TRUE@libunwind_la_SOURCES_os_local = $(libunwind_la_SOURCES_os_qnx_local) -@OS_FREEBSD_TRUE@libunwind_la_SOURCES_x86_os = x86/Gos-freebsd.c -@OS_LINUX_TRUE@libunwind_la_SOURCES_x86_os = x86/Gos-linux.c -@OS_FREEBSD_TRUE@libunwind_x86_la_SOURCES_os = x86/getcontext-freebsd.S -@OS_LINUX_TRUE@libunwind_x86_la_SOURCES_os = x86/getcontext-linux.S -@OS_FREEBSD_TRUE@libunwind_la_SOURCES_x86_os_local = x86/Los-freebsd.c -@OS_LINUX_TRUE@libunwind_la_SOURCES_x86_os_local = x86/Los-linux.c -@OS_FREEBSD_TRUE@libunwind_la_SOURCES_x86_64_os = x86_64/Gos-freebsd.c -@OS_LINUX_TRUE@libunwind_la_SOURCES_x86_64_os = x86_64/Gos-linux.c -@OS_SOLARIS_TRUE@libunwind_la_SOURCES_x86_64_os = x86_64/Gos-solaris.c -@OS_FREEBSD_TRUE@libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-freebsd.c -@OS_LINUX_TRUE@libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-linux.c -@OS_SOLARIS_TRUE@libunwind_la_SOURCES_x86_64_os_local = x86_64/Los-solaris.c -@OS_FREEBSD_TRUE@libunwind_la_SOURCES_arm_os = arm/Gos-freebsd.c -@OS_LINUX_TRUE@libunwind_la_SOURCES_arm_os = arm/Gos-linux.c -@OS_QNX_TRUE@libunwind_la_SOURCES_arm_os = arm/Gos-other.c -@OS_FREEBSD_TRUE@libunwind_la_SOURCES_arm_os_local = arm/Los-freebsd.c -@OS_LINUX_TRUE@libunwind_la_SOURCES_arm_os_local = arm/Los-linux.c -@OS_QNX_TRUE@libunwind_la_SOURCES_arm_os_local = arm/Los-other.c -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_s390x) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_sh) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_ppc64) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_ppc32) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_x86_64) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_x86) $(libunwind_x86_la_SOURCES_os) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_loongarch64) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_riscv) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_tilegx) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_mips) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_hppa) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_ia64) -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_arm) -@ARCH_AARCH64_TRUE@libunwind_la_SOURCES = $(libunwind_la_SOURCES_aarch64) -@ARCH_AARCH64_TRUE@libunwind_aarch64_la_SOURCES = $(libunwind_aarch64_la_SOURCES_aarch64) -@ARCH_AARCH64_TRUE@libunwind_aarch64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_TRUE@libunwind_aarch64_la_LIBADD = \ -@ARCH_AARCH64_TRUE@ libunwind-dwarf-generic.la \ -@ARCH_AARCH64_TRUE@ libunwind-elf64.la $(am__append_28) -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@libunwind_arm_la_SOURCES = $(libunwind_arm_la_SOURCES_arm) -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@libunwind_arm_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@libunwind_arm_la_LIBADD = \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_TRUE@ $(am__append_30) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@BUILT_SOURCES = Gcursor_i.h Lcursor_i.h -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@libunwind_ia64_la_SOURCES = $(libunwind_ia64_la_SOURCES_ia64) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@libunwind_ia64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@libunwind_ia64_la_LIBADD = libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ $(am__append_32) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@libunwind_hppa_la_SOURCES = $(libunwind_hppa_la_SOURCES_hppa) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@libunwind_hppa_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@libunwind_hppa_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_TRUE@@ARCH_IA64_FALSE@ $(am__append_34) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@libunwind_mips_la_SOURCES = $(libunwind_mips_la_SOURCES_mips) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@libunwind_mips_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@libunwind_mips_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@ libunwind-elfxx.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_TRUE@ $(am__append_36) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@libunwind_tilegx_la_SOURCES = $(libunwind_tilegx_la_SOURCES_tilegx) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@libunwind_tilegx_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@libunwind_tilegx_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@ libunwind-elfxx.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_TILEGX_TRUE@ $(am__append_38) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@libunwind_riscv_la_SOURCES = $(libunwind_riscv_la_SOURCES_riscv) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@libunwind_riscv_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@libunwind_riscv_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_TRUE@@ARCH_TILEGX_FALSE@ $(am__append_40) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@libunwind_loongarch64_la_SOURCES = $(libunwind_loongarch64_la_SOURCES_loongarch64) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@libunwind_loongarch64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@libunwind_loongarch64_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_TRUE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@ $(am__append_42) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@libunwind_x86_la_SOURCES = $(libunwind_x86_la_SOURCES_x86) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@libunwind_x86_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@libunwind_x86_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_TRUE@ $(am__append_44) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@libunwind_x86_64_la_SOURCES = $(libunwind_x86_64_la_SOURCES_x86_64) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@libunwind_x86_64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@libunwind_x86_64_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_TRUE@@ARCH_X86_FALSE@ $(am__append_46) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_ppc32_la_SOURCES = $(libunwind_ppc32_la_SOURCES_ppc32) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_ppc32_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_ppc32_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ $(am__append_48) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_ppc64_la_SOURCES = $(libunwind_ppc64_la_SOURCES_ppc64) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_ppc64_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_ppc64_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_TRUE@@ARCH_RISCV_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ $(am__append_50) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_sh_la_SOURCES = $(libunwind_sh_la_SOURCES_sh) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_sh_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_sh_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ libunwind-elf32.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_SH_TRUE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ $(am__append_52) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_s390x_la_SOURCES = $(libunwind_s390x_la_SOURCES_s390x) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_s390x_la_LDFLAGS = $(COMMON_SO_LDFLAGS) -version-info $(SOVERSION) -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@libunwind_s390x_la_LIBADD = libunwind-dwarf-generic.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ libunwind-elf64.la \ -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_HPPA_FALSE@@ARCH_IA64_FALSE@@ARCH_LOONGARCH64_FALSE@@ARCH_MIPS_FALSE@@ARCH_PPC32_FALSE@@ARCH_PPC64_FALSE@@ARCH_RISCV_FALSE@@ARCH_S390X_TRUE@@ARCH_SH_FALSE@@ARCH_TILEGX_FALSE@@ARCH_X86_64_FALSE@@ARCH_X86_FALSE@ $(am__append_54) # # Don't link with standard libraries, because those may mention @@ -2022,31 +2907,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/tdep-$(arch) -I. AM_CCASFLAGS = $(AM_CPPFLAGS) -EXTRA_DIST = $(libunwind_la_SOURCES_aarch64) \ - $(libunwind_la_SOURCES_arm) \ - $(libunwind_la_SOURCES_hppa) \ - $(libunwind_la_SOURCES_ia64) \ - $(libunwind_la_EXTRAS_ia64) \ - $(libunwind_la_SOURCES_mips) \ - $(libunwind_la_SOURCES_sh) \ - $(libunwind_la_SOURCES_x86) \ - $(libunwind_la_SOURCES_os_freebsd) \ - $(libunwind_la_SOURCES_os_linux) \ - $(libunwind_la_SOURCES_os_hpux) \ - $(libunwind_la_SOURCES_os_qnx) \ - $(libunwind_la_SOURCES_os_solaris) \ - $(libunwind_la_SOURCES_common) \ - $(libunwind_la_SOURCES_local) \ - $(libunwind_la_SOURCES_generic) \ - $(libunwind_aarch64_la_SOURCES_aarch64) \ - $(libunwind_arm_la_SOURCES_arm) \ - $(libunwind_hppa_la_SOURCES_hppa) \ - $(libunwind_ia64_la_SOURCES_ia64) \ - $(libunwind_mips_la_SOURCES_mips) \ - $(libunwind_sh_la_SOURCES_sh) \ - $(libunwind_x86_la_SOURCES_x86) \ - $(libunwind_x86_64_la_SOURCES_x86_64) - +EXTRA_DIST = $(libunwind_la_EXTRAS_ia64) MAINTAINERCLEANFILES = Makefile.in all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am @@ -2070,8 +2931,8 @@ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -2150,30 +3011,38 @@ aarch64/$(DEPDIR)/$(am__dirstamp) aarch64/regname.lo: aarch64/$(am__dirstamp) \ aarch64/$(DEPDIR)/$(am__dirstamp) +mi/Gaddress_validator.lo: mi/$(am__dirstamp) \ + mi/$(DEPDIR)/$(am__dirstamp) +mi/Gdestroy_addr_space.lo: mi/$(am__dirstamp) \ + mi/$(DEPDIR)/$(am__dirstamp) mi/Gdyn-extract.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/Gdyn-remote.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/Gfind_dynamic_proc_info.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) mi/Gget_accessors.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) +mi/Gget_fpreg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/Gget_proc_info_by_ip.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) mi/Gget_proc_name.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) -mi/Gget_proc_info_in_range.lo: mi/$(am__dirstamp) \ - mi/$(DEPDIR)/$(am__dirstamp) +mi/Gget_reg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/Gput_dynamic_unwind_info.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) -mi/Gdestroy_addr_space.lo: mi/$(am__dirstamp) \ +mi/Gset_cache_size.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) +mi/Gset_caching_policy.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) -mi/Gget_reg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) -mi/Gset_reg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) -mi/Gget_fpreg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/Gset_fpreg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) -mi/Gset_caching_policy.lo: mi/$(am__dirstamp) \ +mi/Gset_iterate_phdr_function.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) -mi/Gset_cache_size.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) -aarch64/Gapply_reg_state.lo: aarch64/$(am__dirstamp) \ +mi/Gset_reg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) +mi/Gget_elf_filename.lo: mi/$(am__dirstamp) \ + mi/$(DEPDIR)/$(am__dirstamp) +aarch64/Gos-freebsd.lo: aarch64/$(am__dirstamp) \ aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Greg_states_iterate.lo: aarch64/$(am__dirstamp) \ +aarch64/Gos-linux.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Gos-qnx.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Gapply_reg_state.lo: aarch64/$(am__dirstamp) \ aarch64/$(DEPDIR)/$(am__dirstamp) aarch64/Gcreate_addr_space.lo: aarch64/$(am__dirstamp) \ aarch64/$(DEPDIR)/$(am__dirstamp) @@ -2193,6 +3062,8 @@ aarch64/$(DEPDIR)/$(am__dirstamp) aarch64/Gregs.lo: aarch64/$(am__dirstamp) \ aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Greg_states_iterate.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) aarch64/Gresume.lo: aarch64/$(am__dirstamp) \ aarch64/$(DEPDIR)/$(am__dirstamp) aarch64/Gstash_frame.lo: aarch64/$(am__dirstamp) \ @@ -2217,10 +3088,9 @@ arm/Gos-other.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) arm/Gapply_reg_state.lo: arm/$(am__dirstamp) \ arm/$(DEPDIR)/$(am__dirstamp) -arm/Greg_states_iterate.lo: arm/$(am__dirstamp) \ - arm/$(DEPDIR)/$(am__dirstamp) arm/Gcreate_addr_space.lo: arm/$(am__dirstamp) \ arm/$(DEPDIR)/$(am__dirstamp) +arm/Gex_tables.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) arm/Gget_proc_info.lo: arm/$(am__dirstamp) \ arm/$(DEPDIR)/$(am__dirstamp) arm/Gget_save_loc.lo: arm/$(am__dirstamp) \ @@ -2230,10 +3100,11 @@ arm/Ginit_local.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) arm/Ginit_remote.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) arm/Gregs.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Greg_states_iterate.lo: arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) arm/Gresume.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Gstep.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Gex_tables.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) arm/Gstash_frame.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Gstep.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) arm/Gtrace.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) libunwind-arm.la: $(libunwind_arm_la_OBJECTS) $(libunwind_arm_la_DEPENDENCIES) $(EXTRA_libunwind_arm_la_DEPENDENCIES) @@ -2244,23 +3115,25 @@ coredump/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) coredump/$(DEPDIR) @: > coredump/$(DEPDIR)/$(am__dirstamp) +coredump/_UCD_access_mem.lo: coredump/$(am__dirstamp) \ + coredump/$(DEPDIR)/$(am__dirstamp) coredump/_UCD_accessors.lo: coredump/$(am__dirstamp) \ coredump/$(DEPDIR)/$(am__dirstamp) +coredump/_UCD_corefile_elf.lo: coredump/$(am__dirstamp) \ + coredump/$(DEPDIR)/$(am__dirstamp) coredump/_UCD_create.lo: coredump/$(am__dirstamp) \ coredump/$(DEPDIR)/$(am__dirstamp) coredump/_UCD_destroy.lo: coredump/$(am__dirstamp) \ coredump/$(DEPDIR)/$(am__dirstamp) -coredump/_UCD_access_mem.lo: coredump/$(am__dirstamp) \ - coredump/$(DEPDIR)/$(am__dirstamp) coredump/_UCD_elf_map_image.lo: coredump/$(am__dirstamp) \ coredump/$(DEPDIR)/$(am__dirstamp) +coredump/ucd_file_table.lo: coredump/$(am__dirstamp) \ + coredump/$(DEPDIR)/$(am__dirstamp) coredump/_UCD_find_proc_info.lo: coredump/$(am__dirstamp) \ coredump/$(DEPDIR)/$(am__dirstamp) coredump/_UCD_get_proc_name.lo: coredump/$(am__dirstamp) \ coredump/$(DEPDIR)/$(am__dirstamp) -coredump/_UCD_corefile_elf.lo: coredump/$(am__dirstamp) \ - coredump/$(DEPDIR)/$(am__dirstamp) -coredump/ucd_file_table.lo: coredump/$(am__dirstamp) \ +coredump/_UCD_get_elf_filename.lo: coredump/$(am__dirstamp) \ coredump/$(DEPDIR)/$(am__dirstamp) coredump/_UPT_elf.lo: coredump/$(am__dirstamp) \ coredump/$(DEPDIR)/$(am__dirstamp) @@ -2282,6 +3155,10 @@ coredump/$(DEPDIR)/$(am__dirstamp) coredump/_UCD_get_mapinfo_generic.lo: coredump/$(am__dirstamp) \ coredump/$(DEPDIR)/$(am__dirstamp) +coredump/_UCD_access_reg_qnx.lo: coredump/$(am__dirstamp) \ + coredump/$(DEPDIR)/$(am__dirstamp) +coredump/_UCD_get_mapinfo_qnx.lo: coredump/$(am__dirstamp) \ + coredump/$(DEPDIR)/$(am__dirstamp) libunwind-coredump.la: $(libunwind_coredump_la_OBJECTS) $(libunwind_coredump_la_DEPENDENCIES) $(EXTRA_libunwind_coredump_la_DEPENDENCIES) $(AM_V_CCLD)$(libunwind_coredump_la_LINK) $(am_libunwind_coredump_la_rpath) $(libunwind_coredump_la_OBJECTS) $(libunwind_coredump_la_LIBADD) $(LIBS) @@ -2297,25 +3174,29 @@ $(AM_V_CCLD)$(LINK) $(am_libunwind_dwarf_common_la_rpath) $(libunwind_dwarf_common_la_OBJECTS) $(libunwind_dwarf_common_la_LIBADD) $(LIBS) dwarf/Gexpr.lo: dwarf/$(am__dirstamp) dwarf/$(DEPDIR)/$(am__dirstamp) dwarf/Gfde.lo: dwarf/$(am__dirstamp) dwarf/$(DEPDIR)/$(am__dirstamp) -dwarf/Gparser.lo: dwarf/$(am__dirstamp) \ - dwarf/$(DEPDIR)/$(am__dirstamp) -dwarf/Gpe.lo: dwarf/$(am__dirstamp) dwarf/$(DEPDIR)/$(am__dirstamp) dwarf/Gfind_proc_info-lsb.lo: dwarf/$(am__dirstamp) \ dwarf/$(DEPDIR)/$(am__dirstamp) dwarf/Gfind_unwind_table.lo: dwarf/$(am__dirstamp) \ dwarf/$(DEPDIR)/$(am__dirstamp) +dwarf/Gget_proc_info_in_range.lo: dwarf/$(am__dirstamp) \ + dwarf/$(DEPDIR)/$(am__dirstamp) +dwarf/Gparser.lo: dwarf/$(am__dirstamp) \ + dwarf/$(DEPDIR)/$(am__dirstamp) +dwarf/Gpe.lo: dwarf/$(am__dirstamp) dwarf/$(DEPDIR)/$(am__dirstamp) libunwind-dwarf-generic.la: $(libunwind_dwarf_generic_la_OBJECTS) $(libunwind_dwarf_generic_la_DEPENDENCIES) $(EXTRA_libunwind_dwarf_generic_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(am_libunwind_dwarf_generic_la_rpath) $(libunwind_dwarf_generic_la_OBJECTS) $(libunwind_dwarf_generic_la_LIBADD) $(LIBS) dwarf/Lexpr.lo: dwarf/$(am__dirstamp) dwarf/$(DEPDIR)/$(am__dirstamp) dwarf/Lfde.lo: dwarf/$(am__dirstamp) dwarf/$(DEPDIR)/$(am__dirstamp) -dwarf/Lparser.lo: dwarf/$(am__dirstamp) \ - dwarf/$(DEPDIR)/$(am__dirstamp) -dwarf/Lpe.lo: dwarf/$(am__dirstamp) dwarf/$(DEPDIR)/$(am__dirstamp) dwarf/Lfind_proc_info-lsb.lo: dwarf/$(am__dirstamp) \ dwarf/$(DEPDIR)/$(am__dirstamp) dwarf/Lfind_unwind_table.lo: dwarf/$(am__dirstamp) \ dwarf/$(DEPDIR)/$(am__dirstamp) +dwarf/Lget_proc_info_in_range.lo: dwarf/$(am__dirstamp) \ + dwarf/$(DEPDIR)/$(am__dirstamp) +dwarf/Lparser.lo: dwarf/$(am__dirstamp) \ + dwarf/$(DEPDIR)/$(am__dirstamp) +dwarf/Lpe.lo: dwarf/$(am__dirstamp) dwarf/$(DEPDIR)/$(am__dirstamp) libunwind-dwarf-local.la: $(libunwind_dwarf_local_la_OBJECTS) $(libunwind_dwarf_local_la_DEPENDENCIES) $(EXTRA_libunwind_dwarf_local_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(am_libunwind_dwarf_local_la_rpath) $(libunwind_dwarf_local_la_OBJECTS) $(libunwind_dwarf_local_la_LIBADD) $(LIBS) @@ -2337,10 +3218,10 @@ hppa/regname.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) hppa/Gapply_reg_state.lo: hppa/$(am__dirstamp) \ hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Greg_states_iterate.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) hppa/Gcreate_addr_space.lo: hppa/$(am__dirstamp) \ hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Gget_proc_info.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) hppa/Gget_save_loc.lo: hppa/$(am__dirstamp) \ hppa/$(DEPDIR)/$(am__dirstamp) hppa/Gglobal.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) @@ -2351,9 +3232,9 @@ hppa/$(DEPDIR)/$(am__dirstamp) hppa/Gis_signal_frame.lo: hppa/$(am__dirstamp) \ hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Gget_proc_info.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) hppa/Gregs.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Greg_states_iterate.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) hppa/Gresume.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) hppa/Gstep.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) @@ -2368,10 +3249,10 @@ ia64/regname.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) ia64/Gapply_reg_state.lo: ia64/$(am__dirstamp) \ ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Greg_states_iterate.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) ia64/Gcreate_addr_space.lo: ia64/$(am__dirstamp) \ ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Gfind_unwind_table.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) ia64/Gget_proc_info.lo: ia64/$(am__dirstamp) \ ia64/$(DEPDIR)/$(am__dirstamp) ia64/Gget_save_loc.lo: ia64/$(am__dirstamp) \ @@ -2389,12 +3270,12 @@ ia64/Gparser.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) ia64/Grbs.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) ia64/Gregs.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Greg_states_iterate.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) ia64/Gresume.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) ia64/Gscript.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) ia64/Gstep.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) ia64/Gtables.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Gfind_unwind_table.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) libunwind-ia64.la: $(libunwind_ia64_la_OBJECTS) $(libunwind_ia64_la_DEPENDENCIES) $(EXTRA_libunwind_ia64_la_DEPENDENCIES) $(AM_V_CCLD)$(libunwind_ia64_la_LINK) $(am_libunwind_ia64_la_rpath) $(libunwind_ia64_la_OBJECTS) $(libunwind_ia64_la_LIBADD) $(LIBS) @@ -2410,8 +3291,6 @@ loongarch64/$(DEPDIR)/$(am__dirstamp) loongarch64/Gapply_reg_state.lo: loongarch64/$(am__dirstamp) \ loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Greg_states_iterate.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) loongarch64/Gcreate_addr_space.lo: loongarch64/$(am__dirstamp) \ loongarch64/$(DEPDIR)/$(am__dirstamp) loongarch64/Gget_proc_info.lo: loongarch64/$(am__dirstamp) \ @@ -2430,6 +3309,8 @@ loongarch64/$(DEPDIR)/$(am__dirstamp) loongarch64/Gregs.lo: loongarch64/$(am__dirstamp) \ loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Greg_states_iterate.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) loongarch64/Gresume.lo: loongarch64/$(am__dirstamp) \ loongarch64/$(DEPDIR)/$(am__dirstamp) loongarch64/Gstep.lo: loongarch64/$(am__dirstamp) \ @@ -2447,8 +3328,6 @@ mips/regname.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) mips/Gapply_reg_state.lo: mips/$(am__dirstamp) \ mips/$(DEPDIR)/$(am__dirstamp) -mips/Greg_states_iterate.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) mips/Gcreate_addr_space.lo: mips/$(am__dirstamp) \ mips/$(DEPDIR)/$(am__dirstamp) mips/Gget_proc_info.lo: mips/$(am__dirstamp) \ @@ -2464,23 +3343,59 @@ mips/Gis_signal_frame.lo: mips/$(am__dirstamp) \ mips/$(DEPDIR)/$(am__dirstamp) mips/Gregs.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) +mips/Greg_states_iterate.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) mips/Gresume.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) mips/Gstep.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) libunwind-mips.la: $(libunwind_mips_la_OBJECTS) $(libunwind_mips_la_DEPENDENCIES) $(EXTRA_libunwind_mips_la_DEPENDENCIES) $(AM_V_CCLD)$(libunwind_mips_la_LINK) $(am_libunwind_mips_la_rpath) $(libunwind_mips_la_OBJECTS) $(libunwind_mips_la_LIBADD) $(LIBS) +nto/$(am__dirstamp): + @$(MKDIR_P) nto + @: > nto/$(am__dirstamp) +nto/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) nto/$(DEPDIR) + @: > nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_access_fpreg.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_access_mem.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_accessors.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_access_reg.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_create.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_destroy.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_elf.lo: nto/$(am__dirstamp) nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_find_proc_info.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_get_dyn_info_list_addr.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_get_proc_name.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_get_elf_filename.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_put_unwind_info.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) +nto/unw_nto_resume.lo: nto/$(am__dirstamp) \ + nto/$(DEPDIR)/$(am__dirstamp) + +libunwind-nto.la: $(libunwind_nto_la_OBJECTS) $(libunwind_nto_la_DEPENDENCIES) $(EXTRA_libunwind_nto_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(am_libunwind_nto_la_rpath) $(libunwind_nto_la_OBJECTS) $(libunwind_nto_la_LIBADD) $(LIBS) ppc32/$(am__dirstamp): @$(MKDIR_P) ppc32 @: > ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ppc32/$(DEPDIR) @: > ppc32/$(DEPDIR)/$(am__dirstamp) +ppc32/get_func_addr.lo: ppc32/$(am__dirstamp) \ + ppc32/$(DEPDIR)/$(am__dirstamp) ppc32/is_fpreg.lo: ppc32/$(am__dirstamp) \ ppc32/$(DEPDIR)/$(am__dirstamp) ppc32/regname.lo: ppc32/$(am__dirstamp) \ ppc32/$(DEPDIR)/$(am__dirstamp) -ppc32/get_func_addr.lo: ppc32/$(am__dirstamp) \ - ppc32/$(DEPDIR)/$(am__dirstamp) ppc/$(am__dirstamp): @$(MKDIR_P) ppc @: > ppc/$(am__dirstamp) @@ -2497,14 +3412,14 @@ ppc/$(DEPDIR)/$(am__dirstamp) ppc32/Gapply_reg_state.lo: ppc32/$(am__dirstamp) \ ppc32/$(DEPDIR)/$(am__dirstamp) -ppc32/Greg_states_iterate.lo: ppc32/$(am__dirstamp) \ - ppc32/$(DEPDIR)/$(am__dirstamp) ppc32/Gcreate_addr_space.lo: ppc32/$(am__dirstamp) \ ppc32/$(DEPDIR)/$(am__dirstamp) ppc32/Gglobal.lo: ppc32/$(am__dirstamp) \ ppc32/$(DEPDIR)/$(am__dirstamp) ppc32/Ginit.lo: ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp) ppc32/Gregs.lo: ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp) +ppc32/Greg_states_iterate.lo: ppc32/$(am__dirstamp) \ + ppc32/$(DEPDIR)/$(am__dirstamp) ppc32/Gresume.lo: ppc32/$(am__dirstamp) \ ppc32/$(DEPDIR)/$(am__dirstamp) ppc32/Gstep.lo: ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp) @@ -2517,22 +3432,22 @@ ppc64/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ppc64/$(DEPDIR) @: > ppc64/$(DEPDIR)/$(am__dirstamp) +ppc64/get_func_addr.lo: ppc64/$(am__dirstamp) \ + ppc64/$(DEPDIR)/$(am__dirstamp) ppc64/is_fpreg.lo: ppc64/$(am__dirstamp) \ ppc64/$(DEPDIR)/$(am__dirstamp) ppc64/regname.lo: ppc64/$(am__dirstamp) \ ppc64/$(DEPDIR)/$(am__dirstamp) -ppc64/get_func_addr.lo: ppc64/$(am__dirstamp) \ - ppc64/$(DEPDIR)/$(am__dirstamp) ppc64/Gapply_reg_state.lo: ppc64/$(am__dirstamp) \ ppc64/$(DEPDIR)/$(am__dirstamp) -ppc64/Greg_states_iterate.lo: ppc64/$(am__dirstamp) \ - ppc64/$(DEPDIR)/$(am__dirstamp) ppc64/Gcreate_addr_space.lo: ppc64/$(am__dirstamp) \ ppc64/$(DEPDIR)/$(am__dirstamp) ppc64/Gglobal.lo: ppc64/$(am__dirstamp) \ ppc64/$(DEPDIR)/$(am__dirstamp) ppc64/Ginit.lo: ppc64/$(am__dirstamp) ppc64/$(DEPDIR)/$(am__dirstamp) ppc64/Gregs.lo: ppc64/$(am__dirstamp) ppc64/$(DEPDIR)/$(am__dirstamp) +ppc64/Greg_states_iterate.lo: ppc64/$(am__dirstamp) \ + ppc64/$(DEPDIR)/$(am__dirstamp) ppc64/Gresume.lo: ppc64/$(am__dirstamp) \ ppc64/$(DEPDIR)/$(am__dirstamp) ppc64/Gstep.lo: ppc64/$(am__dirstamp) ppc64/$(DEPDIR)/$(am__dirstamp) @@ -2545,28 +3460,30 @@ ptrace/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ptrace/$(DEPDIR) @: > ptrace/$(DEPDIR)/$(am__dirstamp) -ptrace/_UPT_elf.lo: ptrace/$(am__dirstamp) \ - ptrace/$(DEPDIR)/$(am__dirstamp) -ptrace/_UPT_accessors.lo: ptrace/$(am__dirstamp) \ - ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_access_fpreg.lo: ptrace/$(am__dirstamp) \ ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_access_mem.lo: ptrace/$(am__dirstamp) \ ptrace/$(DEPDIR)/$(am__dirstamp) +ptrace/_UPT_accessors.lo: ptrace/$(am__dirstamp) \ + ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_access_reg.lo: ptrace/$(am__dirstamp) \ ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_create.lo: ptrace/$(am__dirstamp) \ ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_destroy.lo: ptrace/$(am__dirstamp) \ ptrace/$(DEPDIR)/$(am__dirstamp) +ptrace/_UPT_elf.lo: ptrace/$(am__dirstamp) \ + ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_find_proc_info.lo: ptrace/$(am__dirstamp) \ ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_get_dyn_info_list_addr.lo: ptrace/$(am__dirstamp) \ ptrace/$(DEPDIR)/$(am__dirstamp) -ptrace/_UPT_put_unwind_info.lo: ptrace/$(am__dirstamp) \ - ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_get_proc_name.lo: ptrace/$(am__dirstamp) \ ptrace/$(DEPDIR)/$(am__dirstamp) +ptrace/_UPT_get_elf_filename.lo: ptrace/$(am__dirstamp) \ + ptrace/$(DEPDIR)/$(am__dirstamp) +ptrace/_UPT_put_unwind_info.lo: ptrace/$(am__dirstamp) \ + ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_reg_offset.lo: ptrace/$(am__dirstamp) \ ptrace/$(DEPDIR)/$(am__dirstamp) ptrace/_UPT_resume.lo: ptrace/$(am__dirstamp) \ @@ -2586,8 +3503,6 @@ riscv/$(DEPDIR)/$(am__dirstamp) riscv/Gapply_reg_state.lo: riscv/$(am__dirstamp) \ riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Greg_states_iterate.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) riscv/Gcreate_addr_space.lo: riscv/$(am__dirstamp) \ riscv/$(DEPDIR)/$(am__dirstamp) riscv/Gget_proc_info.lo: riscv/$(am__dirstamp) \ @@ -2604,6 +3519,8 @@ riscv/Gis_signal_frame.lo: riscv/$(am__dirstamp) \ riscv/$(DEPDIR)/$(am__dirstamp) riscv/Gregs.lo: riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Greg_states_iterate.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) riscv/Gresume.lo: riscv/$(am__dirstamp) \ riscv/$(DEPDIR)/$(am__dirstamp) riscv/Gstep.lo: riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) @@ -2622,10 +3539,10 @@ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Gapply_reg_state.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) -s390x/Greg_states_iterate.lo: s390x/$(am__dirstamp) \ - s390x/$(DEPDIR)/$(am__dirstamp) s390x/Gcreate_addr_space.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) +s390x/Gget_proc_info.lo: s390x/$(am__dirstamp) \ + s390x/$(DEPDIR)/$(am__dirstamp) s390x/Gget_save_loc.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Gglobal.lo: s390x/$(am__dirstamp) \ @@ -2635,12 +3552,12 @@ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Ginit_remote.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) -s390x/Gget_proc_info.lo: s390x/$(am__dirstamp) \ +s390x/Gis_signal_frame.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Gregs.lo: s390x/$(am__dirstamp) s390x/$(DEPDIR)/$(am__dirstamp) -s390x/Gresume.lo: s390x/$(am__dirstamp) \ +s390x/Greg_states_iterate.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) -s390x/Gis_signal_frame.lo: s390x/$(am__dirstamp) \ +s390x/Gresume.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Gstep.lo: s390x/$(am__dirstamp) s390x/$(DEPDIR)/$(am__dirstamp) @@ -2656,30 +3573,33 @@ setjmp/$(DEPDIR)/$(am__dirstamp) setjmp/siglongjmp.lo: setjmp/$(am__dirstamp) \ setjmp/$(DEPDIR)/$(am__dirstamp) +aarch64/longjmp.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) aarch64/siglongjmp.lo: aarch64/$(am__dirstamp) \ aarch64/$(DEPDIR)/$(am__dirstamp) arm/siglongjmp.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -ia64/setjmp.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/sigsetjmp.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +hppa/siglongjmp.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) ia64/longjmp.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/setjmp.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) ia64/siglongjmp.lo: ia64/$(am__dirstamp) \ ia64/$(DEPDIR)/$(am__dirstamp) -hppa/siglongjmp.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) +ia64/sigsetjmp.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +loongarch64/siglongjmp.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) mips/siglongjmp.lo: mips/$(am__dirstamp) \ mips/$(DEPDIR)/$(am__dirstamp) -tilegx/$(am__dirstamp): - @$(MKDIR_P) tilegx - @: > tilegx/$(am__dirstamp) -tilegx/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) tilegx/$(DEPDIR) - @: > tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/siglongjmp.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) +ppc/longjmp.lo: ppc/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp) +ppc/siglongjmp.lo: ppc/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp) riscv/siglongjmp.lo: riscv/$(am__dirstamp) \ riscv/$(DEPDIR)/$(am__dirstamp) -loongarch64/siglongjmp.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) +sh/$(am__dirstamp): + @$(MKDIR_P) sh + @: > sh/$(am__dirstamp) +sh/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) sh/$(DEPDIR) + @: > sh/$(DEPDIR)/$(am__dirstamp) +sh/siglongjmp.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) x86/$(am__dirstamp): @$(MKDIR_P) x86 @: > x86/$(am__dirstamp) @@ -2698,15 +3618,6 @@ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/siglongjmp.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) -ppc/longjmp.lo: ppc/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp) -ppc/siglongjmp.lo: ppc/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp) -sh/$(am__dirstamp): - @$(MKDIR_P) sh - @: > sh/$(am__dirstamp) -sh/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) sh/$(DEPDIR) - @: > sh/$(DEPDIR)/$(am__dirstamp) -sh/siglongjmp.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) libunwind-setjmp.la: $(libunwind_setjmp_la_OBJECTS) $(libunwind_setjmp_la_DEPENDENCIES) $(EXTRA_libunwind_setjmp_la_DEPENDENCIES) $(AM_V_CCLD)$(libunwind_setjmp_la_LINK) $(am_libunwind_setjmp_la_rpath) $(libunwind_setjmp_la_OBJECTS) $(libunwind_setjmp_la_LIBADD) $(LIBS) @@ -2714,8 +3625,6 @@ sh/regname.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) sh/Gapply_reg_state.lo: sh/$(am__dirstamp) \ sh/$(DEPDIR)/$(am__dirstamp) -sh/Greg_states_iterate.lo: sh/$(am__dirstamp) \ - sh/$(DEPDIR)/$(am__dirstamp) sh/Gcreate_addr_space.lo: sh/$(am__dirstamp) \ sh/$(DEPDIR)/$(am__dirstamp) sh/Gget_proc_info.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) @@ -2727,63 +3636,32 @@ sh/Gis_signal_frame.lo: sh/$(am__dirstamp) \ sh/$(DEPDIR)/$(am__dirstamp) sh/Gregs.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) +sh/Greg_states_iterate.lo: sh/$(am__dirstamp) \ + sh/$(DEPDIR)/$(am__dirstamp) sh/Gresume.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) sh/Gstep.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) libunwind-sh.la: $(libunwind_sh_la_OBJECTS) $(libunwind_sh_la_DEPENDENCIES) $(EXTRA_libunwind_sh_la_DEPENDENCIES) $(AM_V_CCLD)$(libunwind_sh_la_LINK) $(am_libunwind_sh_la_rpath) $(libunwind_sh_la_OBJECTS) $(libunwind_sh_la_LIBADD) $(LIBS) -tilegx/is_fpreg.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/regname.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Gapply_reg_state.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Greg_states_iterate.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Gcreate_addr_space.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Gget_proc_info.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Gget_save_loc.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Gglobal.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Ginit.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Ginit_local.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Ginit_remote.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Gis_signal_frame.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Gregs.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Gresume.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Gstep.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) - -libunwind-tilegx.la: $(libunwind_tilegx_la_OBJECTS) $(libunwind_tilegx_la_DEPENDENCIES) $(EXTRA_libunwind_tilegx_la_DEPENDENCIES) - $(AM_V_CCLD)$(libunwind_tilegx_la_LINK) $(am_libunwind_tilegx_la_rpath) $(libunwind_tilegx_la_OBJECTS) $(libunwind_tilegx_la_LIBADD) $(LIBS) x86/is_fpreg.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/regname.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Gos-freebsd.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Gos-linux.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Gapply_reg_state.lo: x86/$(am__dirstamp) \ x86/$(DEPDIR)/$(am__dirstamp) -x86/Greg_states_iterate.lo: x86/$(am__dirstamp) \ - x86/$(DEPDIR)/$(am__dirstamp) x86/Gcreate_addr_space.lo: x86/$(am__dirstamp) \ x86/$(DEPDIR)/$(am__dirstamp) +x86/Gget_proc_info.lo: x86/$(am__dirstamp) \ + x86/$(DEPDIR)/$(am__dirstamp) x86/Gget_save_loc.lo: x86/$(am__dirstamp) \ x86/$(DEPDIR)/$(am__dirstamp) x86/Gglobal.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Ginit.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Ginit_local.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Ginit_remote.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) -x86/Gget_proc_info.lo: x86/$(am__dirstamp) \ - x86/$(DEPDIR)/$(am__dirstamp) x86/Gregs.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) +x86/Greg_states_iterate.lo: x86/$(am__dirstamp) \ + x86/$(DEPDIR)/$(am__dirstamp) x86/Gresume.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Gstep.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) @@ -2797,14 +3675,16 @@ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Gos-linux.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) +x86_64/Gos-qnx.lo: x86_64/$(am__dirstamp) \ + x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Gos-solaris.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Gapply_reg_state.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) -x86_64/Greg_states_iterate.lo: x86_64/$(am__dirstamp) \ - x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Gcreate_addr_space.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) +x86_64/Gget_proc_info.lo: x86_64/$(am__dirstamp) \ + x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Gget_save_loc.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Gglobal.lo: x86_64/$(am__dirstamp) \ @@ -2815,10 +3695,10 @@ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Ginit_remote.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) -x86_64/Gget_proc_info.lo: x86_64/$(am__dirstamp) \ - x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Gregs.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) +x86_64/Greg_states_iterate.lo: x86_64/$(am__dirstamp) \ + x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Gresume.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Gstash_frame.lo: x86_64/$(am__dirstamp) \ @@ -2836,26 +3716,30 @@ mi/dyn-cancel.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/dyn-info-list.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/dyn-register.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) +mi/Laddress_validator.lo: mi/$(am__dirstamp) \ + mi/$(DEPDIR)/$(am__dirstamp) +mi/Ldestroy_addr_space.lo: mi/$(am__dirstamp) \ + mi/$(DEPDIR)/$(am__dirstamp) mi/Ldyn-extract.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/Lfind_dynamic_proc_info.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) mi/Lget_accessors.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) +mi/Lget_fpreg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) +mi/Lset_fpreg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/Lget_proc_info_by_ip.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) mi/Lget_proc_name.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) -mi/Lget_proc_info_in_range.lo: mi/$(am__dirstamp) \ - mi/$(DEPDIR)/$(am__dirstamp) +mi/Lget_reg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/Lput_dynamic_unwind_info.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) -mi/Ldestroy_addr_space.lo: mi/$(am__dirstamp) \ +mi/Lset_cache_size.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) +mi/Lset_caching_policy.lo: mi/$(am__dirstamp) \ + mi/$(DEPDIR)/$(am__dirstamp) +mi/Lset_iterate_phdr_function.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) -mi/Lget_reg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) mi/Lset_reg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) -mi/Lget_fpreg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) -mi/Lset_fpreg.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) -mi/Lset_caching_policy.lo: mi/$(am__dirstamp) \ +mi/Lget_elf_filename.lo: mi/$(am__dirstamp) \ mi/$(DEPDIR)/$(am__dirstamp) -mi/Lset_cache_size.lo: mi/$(am__dirstamp) mi/$(DEPDIR)/$(am__dirstamp) unwind/$(am__dirstamp): @$(MKDIR_P) unwind @: > unwind/$(am__dirstamp) @@ -2880,6 +3764,8 @@ unwind/$(DEPDIR)/$(am__dirstamp) unwind/GetIP.lo: unwind/$(am__dirstamp) \ unwind/$(DEPDIR)/$(am__dirstamp) +unwind/GetIPInfo.lo: unwind/$(am__dirstamp) \ + unwind/$(DEPDIR)/$(am__dirstamp) unwind/GetLanguageSpecificData.lo: unwind/$(am__dirstamp) \ unwind/$(DEPDIR)/$(am__dirstamp) unwind/GetRegionStart.lo: unwind/$(am__dirstamp) \ @@ -2896,14 +3782,248 @@ unwind/$(DEPDIR)/$(am__dirstamp) unwind/SetIP.lo: unwind/$(am__dirstamp) \ unwind/$(DEPDIR)/$(am__dirstamp) -unwind/GetIPInfo.lo: unwind/$(am__dirstamp) \ - unwind/$(DEPDIR)/$(am__dirstamp) -s390x/Lapply_reg_state.lo: s390x/$(am__dirstamp) \ +aarch64/Los-freebsd.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/setcontext.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Los-linux.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Los-qnx.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/getcontext.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lapply_reg_state.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lcreate_addr_space.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lget_proc_info.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lget_save_loc.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lglobal.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Linit.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Linit_local.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Linit_remote.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lis_signal_frame.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lregs.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lreg_states_iterate.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lresume.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lstash_frame.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Lstep.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +aarch64/Ltrace.lo: aarch64/$(am__dirstamp) \ + aarch64/$(DEPDIR)/$(am__dirstamp) +arm/Los-freebsd.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Los-linux.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Los-other.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/getcontext.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Lapply_reg_state.lo: arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/Lcreate_addr_space.lo: arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/Lex_tables.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Lget_proc_info.lo: arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/Lget_save_loc.lo: arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/Lglobal.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Linit.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Linit_local.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Linit_remote.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Lregs.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Lreg_states_iterate.lo: arm/$(am__dirstamp) \ + arm/$(DEPDIR)/$(am__dirstamp) +arm/Lresume.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Lstash_frame.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Lstep.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +arm/Ltrace.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) +hppa/getcontext.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lapply_reg_state.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lcreate_addr_space.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lget_proc_info.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lget_save_loc.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lglobal.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Linit.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Linit_local.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Linit_remote.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lis_signal_frame.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lregs.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lreg_states_iterate.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lresume.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) +hppa/Lstep.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) +hppa/setcontext.lo: hppa/$(am__dirstamp) \ + hppa/$(DEPDIR)/$(am__dirstamp) +ia64/dyn_info_list.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/getcontext.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lapply_reg_state.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lcreate_addr_space.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lfind_unwind_table.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lget_proc_info.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lget_save_loc.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lglobal.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Linit.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Linit_local.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Linit_remote.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Linstall_cursor.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lis_signal_frame.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lparser.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lrbs.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lregs.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lreg_states_iterate.lo: ia64/$(am__dirstamp) \ + ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lresume.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lscript.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Lstep.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +ia64/Ltables.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) +loongarch64/getcontext.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lapply_reg_state.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lcreate_addr_space.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lget_proc_info.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lget_save_loc.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lglobal.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Linit.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Linit_local.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Linit_remote.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lis_signal_frame.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lregs.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lreg_states_iterate.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lresume.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +loongarch64/Lstep.lo: loongarch64/$(am__dirstamp) \ + loongarch64/$(DEPDIR)/$(am__dirstamp) +mips/getcontext.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) +mips/Lapply_reg_state.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) +mips/Lcreate_addr_space.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) +mips/Lget_proc_info.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) +mips/Lget_save_loc.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) +mips/Lglobal.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) +mips/Linit.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) +mips/Linit_local.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) +mips/Linit_remote.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) +mips/Lis_signal_frame.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) +mips/Lregs.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) +mips/Lreg_states_iterate.lo: mips/$(am__dirstamp) \ + mips/$(DEPDIR)/$(am__dirstamp) +mips/Lresume.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) +mips/Lstep.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) +ppc/Lget_proc_info.lo: ppc/$(am__dirstamp) \ + ppc/$(DEPDIR)/$(am__dirstamp) +ppc/Lget_save_loc.lo: ppc/$(am__dirstamp) \ + ppc/$(DEPDIR)/$(am__dirstamp) +ppc/Linit_local.lo: ppc/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp) +ppc/Linit_remote.lo: ppc/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp) +ppc/Lis_signal_frame.lo: ppc/$(am__dirstamp) \ + ppc/$(DEPDIR)/$(am__dirstamp) +ppc32/Lapply_reg_state.lo: ppc32/$(am__dirstamp) \ + ppc32/$(DEPDIR)/$(am__dirstamp) +ppc32/Lcreate_addr_space.lo: ppc32/$(am__dirstamp) \ + ppc32/$(DEPDIR)/$(am__dirstamp) +ppc32/Lglobal.lo: ppc32/$(am__dirstamp) \ + ppc32/$(DEPDIR)/$(am__dirstamp) +ppc32/Linit.lo: ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp) +ppc32/Lregs.lo: ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp) +ppc32/Lreg_states_iterate.lo: ppc32/$(am__dirstamp) \ + ppc32/$(DEPDIR)/$(am__dirstamp) +ppc32/Lresume.lo: ppc32/$(am__dirstamp) \ + ppc32/$(DEPDIR)/$(am__dirstamp) +ppc32/Lstep.lo: ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp) +ppc64/Lapply_reg_state.lo: ppc64/$(am__dirstamp) \ + ppc64/$(DEPDIR)/$(am__dirstamp) +ppc64/Lcreate_addr_space.lo: ppc64/$(am__dirstamp) \ + ppc64/$(DEPDIR)/$(am__dirstamp) +ppc64/Lglobal.lo: ppc64/$(am__dirstamp) \ + ppc64/$(DEPDIR)/$(am__dirstamp) +ppc64/Linit.lo: ppc64/$(am__dirstamp) ppc64/$(DEPDIR)/$(am__dirstamp) +ppc64/Lregs.lo: ppc64/$(am__dirstamp) ppc64/$(DEPDIR)/$(am__dirstamp) +ppc64/Lreg_states_iterate.lo: ppc64/$(am__dirstamp) \ + ppc64/$(DEPDIR)/$(am__dirstamp) +ppc64/Lresume.lo: ppc64/$(am__dirstamp) \ + ppc64/$(DEPDIR)/$(am__dirstamp) +ppc64/Lstep.lo: ppc64/$(am__dirstamp) ppc64/$(DEPDIR)/$(am__dirstamp) +riscv/getcontext.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lapply_reg_state.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lcreate_addr_space.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lget_proc_info.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lget_save_loc.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lglobal.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Linit.lo: riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Linit_local.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Linit_remote.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lis_signal_frame.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lregs.lo: riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lreg_states_iterate.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lresume.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +riscv/Lstep.lo: riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) +riscv/setcontext.lo: riscv/$(am__dirstamp) \ + riscv/$(DEPDIR)/$(am__dirstamp) +s390x/getcontext.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) -s390x/Lreg_states_iterate.lo: s390x/$(am__dirstamp) \ +s390x/Lapply_reg_state.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Lcreate_addr_space.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) +s390x/Lget_proc_info.lo: s390x/$(am__dirstamp) \ + s390x/$(DEPDIR)/$(am__dirstamp) s390x/Lget_save_loc.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Lglobal.lo: s390x/$(am__dirstamp) \ @@ -2913,22 +4033,18 @@ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Linit_remote.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) -s390x/Lget_proc_info.lo: s390x/$(am__dirstamp) \ +s390x/Lis_signal_frame.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Lregs.lo: s390x/$(am__dirstamp) s390x/$(DEPDIR)/$(am__dirstamp) -s390x/Lresume.lo: s390x/$(am__dirstamp) \ +s390x/Lreg_states_iterate.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) -s390x/Lis_signal_frame.lo: s390x/$(am__dirstamp) \ +s390x/Lresume.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) s390x/Lstep.lo: s390x/$(am__dirstamp) s390x/$(DEPDIR)/$(am__dirstamp) -s390x/getcontext.lo: s390x/$(am__dirstamp) \ - s390x/$(DEPDIR)/$(am__dirstamp) s390x/setcontext.lo: s390x/$(am__dirstamp) \ s390x/$(DEPDIR)/$(am__dirstamp) sh/Lapply_reg_state.lo: sh/$(am__dirstamp) \ sh/$(DEPDIR)/$(am__dirstamp) -sh/Lreg_states_iterate.lo: sh/$(am__dirstamp) \ - sh/$(DEPDIR)/$(am__dirstamp) sh/Lcreate_addr_space.lo: sh/$(am__dirstamp) \ sh/$(DEPDIR)/$(am__dirstamp) sh/Lget_proc_info.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) @@ -2940,56 +4056,26 @@ sh/Lis_signal_frame.lo: sh/$(am__dirstamp) \ sh/$(DEPDIR)/$(am__dirstamp) sh/Lregs.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) +sh/Lreg_states_iterate.lo: sh/$(am__dirstamp) \ + sh/$(DEPDIR)/$(am__dirstamp) sh/Lresume.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) sh/Lstep.lo: sh/$(am__dirstamp) sh/$(DEPDIR)/$(am__dirstamp) -ppc/Lget_proc_info.lo: ppc/$(am__dirstamp) \ - ppc/$(DEPDIR)/$(am__dirstamp) -ppc/Lget_save_loc.lo: ppc/$(am__dirstamp) \ - ppc/$(DEPDIR)/$(am__dirstamp) -ppc/Linit_local.lo: ppc/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp) -ppc/Linit_remote.lo: ppc/$(am__dirstamp) ppc/$(DEPDIR)/$(am__dirstamp) -ppc/Lis_signal_frame.lo: ppc/$(am__dirstamp) \ - ppc/$(DEPDIR)/$(am__dirstamp) -ppc64/Lapply_reg_state.lo: ppc64/$(am__dirstamp) \ - ppc64/$(DEPDIR)/$(am__dirstamp) -ppc64/Lreg_states_iterate.lo: ppc64/$(am__dirstamp) \ - ppc64/$(DEPDIR)/$(am__dirstamp) -ppc64/Lcreate_addr_space.lo: ppc64/$(am__dirstamp) \ - ppc64/$(DEPDIR)/$(am__dirstamp) -ppc64/Lglobal.lo: ppc64/$(am__dirstamp) \ - ppc64/$(DEPDIR)/$(am__dirstamp) -ppc64/Linit.lo: ppc64/$(am__dirstamp) ppc64/$(DEPDIR)/$(am__dirstamp) -ppc64/Lregs.lo: ppc64/$(am__dirstamp) ppc64/$(DEPDIR)/$(am__dirstamp) -ppc64/Lresume.lo: ppc64/$(am__dirstamp) \ - ppc64/$(DEPDIR)/$(am__dirstamp) -ppc64/Lstep.lo: ppc64/$(am__dirstamp) ppc64/$(DEPDIR)/$(am__dirstamp) -ppc32/Lapply_reg_state.lo: ppc32/$(am__dirstamp) \ - ppc32/$(DEPDIR)/$(am__dirstamp) -ppc32/Lreg_states_iterate.lo: ppc32/$(am__dirstamp) \ - ppc32/$(DEPDIR)/$(am__dirstamp) -ppc32/Lcreate_addr_space.lo: ppc32/$(am__dirstamp) \ - ppc32/$(DEPDIR)/$(am__dirstamp) -ppc32/Lglobal.lo: ppc32/$(am__dirstamp) \ - ppc32/$(DEPDIR)/$(am__dirstamp) -ppc32/Linit.lo: ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp) -ppc32/Lregs.lo: ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp) -ppc32/Lresume.lo: ppc32/$(am__dirstamp) \ - ppc32/$(DEPDIR)/$(am__dirstamp) -ppc32/Lstep.lo: ppc32/$(am__dirstamp) ppc32/$(DEPDIR)/$(am__dirstamp) x86_64/Los-freebsd.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Los-linux.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) +x86_64/Los-qnx.lo: x86_64/$(am__dirstamp) \ + x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Los-solaris.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) -x86_64/setcontext.lo: x86_64/$(am__dirstamp) \ +x86_64/getcontext.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Lapply_reg_state.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) -x86_64/Lreg_states_iterate.lo: x86_64/$(am__dirstamp) \ - x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Lcreate_addr_space.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) +x86_64/Lget_proc_info.lo: x86_64/$(am__dirstamp) \ + x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Lget_save_loc.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Lglobal.lo: x86_64/$(am__dirstamp) \ @@ -3000,10 +4086,10 @@ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Linit_remote.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) -x86_64/Lget_proc_info.lo: x86_64/$(am__dirstamp) \ - x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Lregs.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) +x86_64/Lreg_states_iterate.lo: x86_64/$(am__dirstamp) \ + x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Lresume.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Lstash_frame.lo: x86_64/$(am__dirstamp) \ @@ -3012,251 +4098,31 @@ x86_64/$(DEPDIR)/$(am__dirstamp) x86_64/Ltrace.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) -x86_64/getcontext.lo: x86_64/$(am__dirstamp) \ +x86_64/setcontext.lo: x86_64/$(am__dirstamp) \ x86_64/$(DEPDIR)/$(am__dirstamp) x86/Los-freebsd.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) +x86/getcontext-freebsd.lo: x86/$(am__dirstamp) \ + x86/$(DEPDIR)/$(am__dirstamp) x86/Los-linux.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) -x86/Lapply_reg_state.lo: x86/$(am__dirstamp) \ +x86/getcontext-linux.lo: x86/$(am__dirstamp) \ x86/$(DEPDIR)/$(am__dirstamp) -x86/Lreg_states_iterate.lo: x86/$(am__dirstamp) \ +x86/Lapply_reg_state.lo: x86/$(am__dirstamp) \ x86/$(DEPDIR)/$(am__dirstamp) x86/Lcreate_addr_space.lo: x86/$(am__dirstamp) \ x86/$(DEPDIR)/$(am__dirstamp) +x86/Lget_proc_info.lo: x86/$(am__dirstamp) \ + x86/$(DEPDIR)/$(am__dirstamp) x86/Lget_save_loc.lo: x86/$(am__dirstamp) \ x86/$(DEPDIR)/$(am__dirstamp) x86/Lglobal.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Linit.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Linit_local.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Linit_remote.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) -x86/Lget_proc_info.lo: x86/$(am__dirstamp) \ - x86/$(DEPDIR)/$(am__dirstamp) x86/Lregs.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) +x86/Lreg_states_iterate.lo: x86/$(am__dirstamp) \ + x86/$(DEPDIR)/$(am__dirstamp) x86/Lresume.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) x86/Lstep.lo: x86/$(am__dirstamp) x86/$(DEPDIR)/$(am__dirstamp) -x86/getcontext-freebsd.lo: x86/$(am__dirstamp) \ - x86/$(DEPDIR)/$(am__dirstamp) -x86/getcontext-linux.lo: x86/$(am__dirstamp) \ - x86/$(DEPDIR)/$(am__dirstamp) -loongarch64/getcontext.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lapply_reg_state.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lreg_states_iterate.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lcreate_addr_space.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lget_proc_info.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lget_save_loc.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lglobal.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Linit.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Linit_local.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Linit_remote.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lis_signal_frame.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lregs.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lresume.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -loongarch64/Lstep.lo: loongarch64/$(am__dirstamp) \ - loongarch64/$(DEPDIR)/$(am__dirstamp) -riscv/getcontext.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/setcontext.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lapply_reg_state.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lreg_states_iterate.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lcreate_addr_space.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lget_proc_info.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lget_save_loc.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lglobal.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Linit.lo: riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Linit_local.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Linit_remote.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lis_signal_frame.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lregs.lo: riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lresume.lo: riscv/$(am__dirstamp) \ - riscv/$(DEPDIR)/$(am__dirstamp) -riscv/Lstep.lo: riscv/$(am__dirstamp) riscv/$(DEPDIR)/$(am__dirstamp) -tilegx/getcontext.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lapply_reg_state.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lreg_states_iterate.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lcreate_addr_space.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lget_proc_info.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lget_save_loc.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lglobal.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Linit.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Linit_local.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Linit_remote.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lis_signal_frame.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lregs.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lresume.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -tilegx/Lstep.lo: tilegx/$(am__dirstamp) \ - tilegx/$(DEPDIR)/$(am__dirstamp) -mips/getcontext.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) -mips/Lapply_reg_state.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) -mips/Lreg_states_iterate.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) -mips/Lcreate_addr_space.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) -mips/Lget_proc_info.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) -mips/Lget_save_loc.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) -mips/Lglobal.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) -mips/Linit.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) -mips/Linit_local.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) -mips/Linit_remote.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) -mips/Lis_signal_frame.lo: mips/$(am__dirstamp) \ - mips/$(DEPDIR)/$(am__dirstamp) -mips/Lregs.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) -mips/Lresume.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) -mips/Lstep.lo: mips/$(am__dirstamp) mips/$(DEPDIR)/$(am__dirstamp) -hppa/getcontext.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/setcontext.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lapply_reg_state.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lreg_states_iterate.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lcreate_addr_space.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lget_save_loc.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lglobal.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Linit.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Linit_local.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Linit_remote.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lis_signal_frame.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lget_proc_info.lo: hppa/$(am__dirstamp) \ - hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lregs.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lresume.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) -hppa/Lstep.lo: hppa/$(am__dirstamp) hppa/$(DEPDIR)/$(am__dirstamp) -ia64/dyn_info_list.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/getcontext.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lapply_reg_state.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lreg_states_iterate.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lcreate_addr_space.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lget_proc_info.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lget_save_loc.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lglobal.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Linit.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Linit_local.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Linit_remote.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Linstall_cursor.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lis_signal_frame.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lparser.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lrbs.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lregs.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lresume.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lscript.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lstep.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Ltables.lo: ia64/$(am__dirstamp) ia64/$(DEPDIR)/$(am__dirstamp) -ia64/Lfind_unwind_table.lo: ia64/$(am__dirstamp) \ - ia64/$(DEPDIR)/$(am__dirstamp) -arm/Los-freebsd.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Los-linux.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Los-other.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/getcontext.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Lapply_reg_state.lo: arm/$(am__dirstamp) \ - arm/$(DEPDIR)/$(am__dirstamp) -arm/Lreg_states_iterate.lo: arm/$(am__dirstamp) \ - arm/$(DEPDIR)/$(am__dirstamp) -arm/Lcreate_addr_space.lo: arm/$(am__dirstamp) \ - arm/$(DEPDIR)/$(am__dirstamp) -arm/Lget_proc_info.lo: arm/$(am__dirstamp) \ - arm/$(DEPDIR)/$(am__dirstamp) -arm/Lget_save_loc.lo: arm/$(am__dirstamp) \ - arm/$(DEPDIR)/$(am__dirstamp) -arm/Lglobal.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Linit.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Linit_local.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Linit_remote.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Lregs.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Lresume.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Lstep.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Lex_tables.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Lstash_frame.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -arm/Ltrace.lo: arm/$(am__dirstamp) arm/$(DEPDIR)/$(am__dirstamp) -aarch64/Lapply_reg_state.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lreg_states_iterate.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lcreate_addr_space.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lget_proc_info.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lget_save_loc.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lglobal.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Linit.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Linit_local.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Linit_remote.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lis_signal_frame.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lregs.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lresume.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lstash_frame.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Lstep.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/Ltrace.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) -aarch64/getcontext.lo: aarch64/$(am__dirstamp) \ - aarch64/$(DEPDIR)/$(am__dirstamp) libunwind.la: $(libunwind_la_OBJECTS) $(libunwind_la_DEPENDENCIES) $(EXTRA_libunwind_la_DEPENDENCIES) $(AM_V_CCLD)$(libunwind_la_LINK) $(am_libunwind_la_rpath) $(libunwind_la_OBJECTS) $(libunwind_la_LIBADD) $(LIBS) @@ -3281,6 +4147,8 @@ -rm -f mi/*.lo -rm -f mips/*.$(OBJEXT) -rm -f mips/*.lo + -rm -f nto/*.$(OBJEXT) + -rm -f nto/*.lo -rm -f ppc/*.$(OBJEXT) -rm -f ppc/*.lo -rm -f ppc32/*.$(OBJEXT) @@ -3297,8 +4165,6 @@ -rm -f setjmp/*.lo -rm -f sh/*.$(OBJEXT) -rm -f sh/*.lo - -rm -f tilegx/*.$(OBJEXT) - -rm -f tilegx/*.lo -rm -f unwind/*.$(OBJEXT) -rm -f unwind/*.lo -rm -f x86/*.$(OBJEXT) @@ -3309,572 +4175,581 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dl-iterate-phdr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-hpux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-qnx.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-solaris.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gstash_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gtrace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lstash_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Ltrace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gex_tables.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gos-freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gos-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gos-other.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gstash_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gtrace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lex_tables.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Los-freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Los-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Los-other.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lstash_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Ltrace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_access_mem.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_access_reg_freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_access_reg_linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_accessors.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_corefile_elf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_create.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_destroy.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_elf_map_image.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_find_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_mapinfo_generic.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_mapinfo_linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_proc_name.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_threadinfo_prstatus.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_access_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_elf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_put_unwind_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_resume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/ucd_file_table.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gexpr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gfde.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gfind_proc_info-lsb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gfind_unwind_table.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gparser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gpe.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lexpr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lfde.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lfind_proc_info-lsb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lfind_unwind_table.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lparser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lpe.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/global.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/setcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gfind_unwind_table.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ginstall_cursor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gparser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Grbs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gscript.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gtables.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lfind_unwind_table.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Linstall_cursor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lparser.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lrbs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lscript.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ltables.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/dyn_info_list.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/longjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/setjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/sigsetjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gdestroy_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gdyn-extract.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gdyn-remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gfind_dynamic_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_accessors.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_proc_info_by_ip.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_proc_info_in_range.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_proc_name.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_reg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gput_dynamic_unwind_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gset_cache_size.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gset_caching_policy.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gset_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gset_reg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Ldestroy_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Ldyn-extract.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lfind_dynamic_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_accessors.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_proc_info_by_ip.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_proc_info_in_range.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_proc_name.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_reg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lput_dynamic_unwind_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lset_cache_size.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lset_caching_policy.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lset_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lset_reg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/_ReadSLEB.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/_ReadULEB.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/backtrace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/dyn-cancel.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/dyn-info-list.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/dyn-register.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/flush_cache.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/init.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/mempool.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/strerror.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/longjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/get_func_addr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/get_func_addr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_access_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_access_mem.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_access_reg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_accessors.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_create.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_destroy.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_elf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_find_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_get_proc_name.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_put_unwind_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_reg_offset.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_resume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/setcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/setcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@setjmp/$(DEPDIR)/longjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@setjmp/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@tilegx/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/Backtrace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/DeleteException.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/FindEnclosingFunction.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/ForcedUnwind.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetBSP.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetCFA.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetDataRelBase.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetGR.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetIP.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetIPInfo.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetLanguageSpecificData.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetRegionStart.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetTextRelBase.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/RaiseException.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/Resume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/Resume_or_Rethrow.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/SetGR.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/SetIP.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gos-freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gos-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Los-freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Los-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/getcontext-freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/getcontext-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/longjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/siglongjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Ginit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Ginit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Ginit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gos-freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gos-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gos-solaris.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gstash_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gtrace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lglobal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Linit.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Linit_local.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Linit_remote.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Los-freebsd.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Los-linux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Los-solaris.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lregs.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lresume.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lstash_frame.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lstep.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Ltrace.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/getcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/is_fpreg.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/longjmp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/regname.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/setcontext.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/siglongjmp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dl-iterate-phdr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-hpux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-qnx.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/os-solaris.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gos-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gos-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gos-qnx.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gstash_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Gtrace.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Los-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Los-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Los-qnx.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lstash_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/Ltrace.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/getcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/longjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/setcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gex_tables.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gos-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gos-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gos-other.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gstash_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Gtrace.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lex_tables.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Los-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Los-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Los-other.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lstash_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/Ltrace.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/getcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_access_mem.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_access_reg_freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_access_reg_linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_access_reg_qnx.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_accessors.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_corefile_elf.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_create.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_destroy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_elf_map_image.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_find_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_elf_filename.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_mapinfo_generic.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_mapinfo_linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_mapinfo_qnx.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_proc_name.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UCD_get_threadinfo_prstatus.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_access_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_elf.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_put_unwind_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/_UPT_resume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@coredump/$(DEPDIR)/ucd_file_table.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gexpr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gfde.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gfind_proc_info-lsb.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gfind_unwind_table.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gget_proc_info_in_range.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gparser.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Gpe.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lexpr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lfde.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lfind_proc_info-lsb.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lfind_unwind_table.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lget_proc_info_in_range.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lparser.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/Lpe.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@dwarf/$(DEPDIR)/global.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/getcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/setcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@hppa/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gfind_unwind_table.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ginstall_cursor.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gparser.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Grbs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gscript.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Gtables.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lfind_unwind_table.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Linstall_cursor.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lparser.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lrbs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lscript.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/Ltables.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/dyn_info_list.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/getcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/longjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/setjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ia64/$(DEPDIR)/sigsetjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/getcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@loongarch64/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gaddress_validator.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gdestroy_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gdyn-extract.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gdyn-remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gfind_dynamic_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_accessors.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_elf_filename.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_proc_info_by_ip.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_proc_name.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gget_reg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gput_dynamic_unwind_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gset_cache_size.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gset_caching_policy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gset_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gset_iterate_phdr_function.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Gset_reg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Laddress_validator.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Ldestroy_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Ldyn-extract.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lfind_dynamic_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_accessors.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_elf_filename.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_proc_info_by_ip.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_proc_name.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lget_reg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lput_dynamic_unwind_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lset_cache_size.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lset_caching_policy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lset_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lset_iterate_phdr_function.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/Lset_reg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/_ReadSLEB.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/_ReadULEB.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/backtrace.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/dyn-cancel.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/dyn-info-list.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/dyn-register.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/flush_cache.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/init.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/mempool.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mi/$(DEPDIR)/strerror.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/getcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@mips/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_access_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_access_mem.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_access_reg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_accessors.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_create.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_destroy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_elf.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_find_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_get_dyn_info_list_addr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_get_elf_filename.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_get_proc_name.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_put_unwind_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@nto/$(DEPDIR)/unw_nto_resume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/longjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/get_func_addr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc32/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/get_func_addr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ppc64/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_access_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_access_mem.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_access_reg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_accessors.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_create.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_destroy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_elf.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_find_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_get_elf_filename.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_get_proc_name.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_put_unwind_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_reg_offset.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@ptrace/$(DEPDIR)/_UPT_resume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/getcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/setcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@riscv/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/getcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@s390x/$(DEPDIR)/setcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@setjmp/$(DEPDIR)/longjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@setjmp/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lis_signal_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@sh/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/Backtrace.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/DeleteException.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/FindEnclosingFunction.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/ForcedUnwind.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetBSP.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetCFA.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetDataRelBase.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetGR.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetIP.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetIPInfo.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetLanguageSpecificData.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetRegionStart.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/GetTextRelBase.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/RaiseException.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/Resume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/Resume_or_Rethrow.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/SetGR.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@unwind/$(DEPDIR)/SetIP.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gos-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gos-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Los-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Los-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/getcontext-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/getcontext-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/longjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Ginit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Ginit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Ginit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gos-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gos-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gos-qnx.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gos-solaris.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Greg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gstash_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Gtrace.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lapply_reg_state.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lcreate_addr_space.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lget_proc_info.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lget_save_loc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lglobal.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Linit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Linit_local.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Linit_remote.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Los-freebsd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Los-linux.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Los-qnx.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Los-solaris.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lreg_states_iterate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lregs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lresume.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lstash_frame.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Lstep.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/Ltrace.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/getcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/is_fpreg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/longjmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/regname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/setcontext.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@x86_64/$(DEPDIR)/siglongjmp.Plo@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .S.o: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @@ -3938,6 +4813,7 @@ -rm -rf loongarch64/.libs loongarch64/_libs -rm -rf mi/.libs mi/_libs -rm -rf mips/.libs mips/_libs + -rm -rf nto/.libs nto/_libs -rm -rf ppc/.libs ppc/_libs -rm -rf ppc32/.libs ppc32/_libs -rm -rf ppc64/.libs ppc64/_libs @@ -3946,7 +4822,6 @@ -rm -rf s390x/.libs s390x/_libs -rm -rf setjmp/.libs setjmp/_libs -rm -rf sh/.libs sh/_libs - -rm -rf tilegx/.libs tilegx/_libs -rm -rf unwind/.libs unwind/_libs -rm -rf x86/.libs x86/_libs -rm -rf x86_64/.libs x86_64/_libs @@ -4024,7 +4899,10 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -4107,6 +4985,8 @@ -rm -f mi/$(am__dirstamp) -rm -f mips/$(DEPDIR)/$(am__dirstamp) -rm -f mips/$(am__dirstamp) + -rm -f nto/$(DEPDIR)/$(am__dirstamp) + -rm -f nto/$(am__dirstamp) -rm -f ppc/$(DEPDIR)/$(am__dirstamp) -rm -f ppc/$(am__dirstamp) -rm -f ppc32/$(DEPDIR)/$(am__dirstamp) @@ -4123,8 +5003,6 @@ -rm -f setjmp/$(am__dirstamp) -rm -f sh/$(DEPDIR)/$(am__dirstamp) -rm -f sh/$(am__dirstamp) - -rm -f tilegx/$(DEPDIR)/$(am__dirstamp) - -rm -f tilegx/$(am__dirstamp) -rm -f unwind/$(DEPDIR)/$(am__dirstamp) -rm -f unwind/$(am__dirstamp) -rm -f x86/$(DEPDIR)/$(am__dirstamp) @@ -4143,7 +5021,575 @@ clean-noinstLTLIBRARIES mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arm/$(DEPDIR) coredump/$(DEPDIR) dwarf/$(DEPDIR) hppa/$(DEPDIR) ia64/$(DEPDIR) loongarch64/$(DEPDIR) mi/$(DEPDIR) mips/$(DEPDIR) ppc/$(DEPDIR) ppc32/$(DEPDIR) ppc64/$(DEPDIR) ptrace/$(DEPDIR) riscv/$(DEPDIR) s390x/$(DEPDIR) setjmp/$(DEPDIR) sh/$(DEPDIR) tilegx/$(DEPDIR) unwind/$(DEPDIR) x86/$(DEPDIR) x86_64/$(DEPDIR) + -rm -f ./$(DEPDIR)/dl-iterate-phdr.Plo + -rm -f ./$(DEPDIR)/elf32.Plo + -rm -f ./$(DEPDIR)/elf64.Plo + -rm -f ./$(DEPDIR)/elfxx.Plo + -rm -f ./$(DEPDIR)/os-freebsd.Plo + -rm -f ./$(DEPDIR)/os-hpux.Plo + -rm -f ./$(DEPDIR)/os-linux.Plo + -rm -f ./$(DEPDIR)/os-qnx.Plo + -rm -f ./$(DEPDIR)/os-solaris.Plo + -rm -f aarch64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f aarch64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f aarch64/$(DEPDIR)/Gget_proc_info.Plo + -rm -f aarch64/$(DEPDIR)/Gget_save_loc.Plo + -rm -f aarch64/$(DEPDIR)/Gglobal.Plo + -rm -f aarch64/$(DEPDIR)/Ginit.Plo + -rm -f aarch64/$(DEPDIR)/Ginit_local.Plo + -rm -f aarch64/$(DEPDIR)/Ginit_remote.Plo + -rm -f aarch64/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f aarch64/$(DEPDIR)/Gos-freebsd.Plo + -rm -f aarch64/$(DEPDIR)/Gos-linux.Plo + -rm -f aarch64/$(DEPDIR)/Gos-qnx.Plo + -rm -f aarch64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f aarch64/$(DEPDIR)/Gregs.Plo + -rm -f aarch64/$(DEPDIR)/Gresume.Plo + -rm -f aarch64/$(DEPDIR)/Gstash_frame.Plo + -rm -f aarch64/$(DEPDIR)/Gstep.Plo + -rm -f aarch64/$(DEPDIR)/Gtrace.Plo + -rm -f aarch64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f aarch64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f aarch64/$(DEPDIR)/Lget_proc_info.Plo + -rm -f aarch64/$(DEPDIR)/Lget_save_loc.Plo + -rm -f aarch64/$(DEPDIR)/Lglobal.Plo + -rm -f aarch64/$(DEPDIR)/Linit.Plo + -rm -f aarch64/$(DEPDIR)/Linit_local.Plo + -rm -f aarch64/$(DEPDIR)/Linit_remote.Plo + -rm -f aarch64/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f aarch64/$(DEPDIR)/Los-freebsd.Plo + -rm -f aarch64/$(DEPDIR)/Los-linux.Plo + -rm -f aarch64/$(DEPDIR)/Los-qnx.Plo + -rm -f aarch64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f aarch64/$(DEPDIR)/Lregs.Plo + -rm -f aarch64/$(DEPDIR)/Lresume.Plo + -rm -f aarch64/$(DEPDIR)/Lstash_frame.Plo + -rm -f aarch64/$(DEPDIR)/Lstep.Plo + -rm -f aarch64/$(DEPDIR)/Ltrace.Plo + -rm -f aarch64/$(DEPDIR)/getcontext.Plo + -rm -f aarch64/$(DEPDIR)/is_fpreg.Plo + -rm -f aarch64/$(DEPDIR)/longjmp.Plo + -rm -f aarch64/$(DEPDIR)/regname.Plo + -rm -f aarch64/$(DEPDIR)/setcontext.Plo + -rm -f aarch64/$(DEPDIR)/siglongjmp.Plo + -rm -f arm/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f arm/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f arm/$(DEPDIR)/Gex_tables.Plo + -rm -f arm/$(DEPDIR)/Gget_proc_info.Plo + -rm -f arm/$(DEPDIR)/Gget_save_loc.Plo + -rm -f arm/$(DEPDIR)/Gglobal.Plo + -rm -f arm/$(DEPDIR)/Ginit.Plo + -rm -f arm/$(DEPDIR)/Ginit_local.Plo + -rm -f arm/$(DEPDIR)/Ginit_remote.Plo + -rm -f arm/$(DEPDIR)/Gos-freebsd.Plo + -rm -f arm/$(DEPDIR)/Gos-linux.Plo + -rm -f arm/$(DEPDIR)/Gos-other.Plo + -rm -f arm/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f arm/$(DEPDIR)/Gregs.Plo + -rm -f arm/$(DEPDIR)/Gresume.Plo + -rm -f arm/$(DEPDIR)/Gstash_frame.Plo + -rm -f arm/$(DEPDIR)/Gstep.Plo + -rm -f arm/$(DEPDIR)/Gtrace.Plo + -rm -f arm/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f arm/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f arm/$(DEPDIR)/Lex_tables.Plo + -rm -f arm/$(DEPDIR)/Lget_proc_info.Plo + -rm -f arm/$(DEPDIR)/Lget_save_loc.Plo + -rm -f arm/$(DEPDIR)/Lglobal.Plo + -rm -f arm/$(DEPDIR)/Linit.Plo + -rm -f arm/$(DEPDIR)/Linit_local.Plo + -rm -f arm/$(DEPDIR)/Linit_remote.Plo + -rm -f arm/$(DEPDIR)/Los-freebsd.Plo + -rm -f arm/$(DEPDIR)/Los-linux.Plo + -rm -f arm/$(DEPDIR)/Los-other.Plo + -rm -f arm/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f arm/$(DEPDIR)/Lregs.Plo + -rm -f arm/$(DEPDIR)/Lresume.Plo + -rm -f arm/$(DEPDIR)/Lstash_frame.Plo + -rm -f arm/$(DEPDIR)/Lstep.Plo + -rm -f arm/$(DEPDIR)/Ltrace.Plo + -rm -f arm/$(DEPDIR)/getcontext.Plo + -rm -f arm/$(DEPDIR)/is_fpreg.Plo + -rm -f arm/$(DEPDIR)/regname.Plo + -rm -f arm/$(DEPDIR)/siglongjmp.Plo + -rm -f coredump/$(DEPDIR)/_UCD_access_mem.Plo + -rm -f coredump/$(DEPDIR)/_UCD_access_reg_freebsd.Plo + -rm -f coredump/$(DEPDIR)/_UCD_access_reg_linux.Plo + -rm -f coredump/$(DEPDIR)/_UCD_access_reg_qnx.Plo + -rm -f coredump/$(DEPDIR)/_UCD_accessors.Plo + -rm -f coredump/$(DEPDIR)/_UCD_corefile_elf.Plo + -rm -f coredump/$(DEPDIR)/_UCD_create.Plo + -rm -f coredump/$(DEPDIR)/_UCD_destroy.Plo + -rm -f coredump/$(DEPDIR)/_UCD_elf_map_image.Plo + -rm -f coredump/$(DEPDIR)/_UCD_find_proc_info.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_elf_filename.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_mapinfo_generic.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_mapinfo_linux.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_mapinfo_qnx.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_proc_name.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_threadinfo_prstatus.Plo + -rm -f coredump/$(DEPDIR)/_UPT_access_fpreg.Plo + -rm -f coredump/$(DEPDIR)/_UPT_elf.Plo + -rm -f coredump/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo + -rm -f coredump/$(DEPDIR)/_UPT_put_unwind_info.Plo + -rm -f coredump/$(DEPDIR)/_UPT_resume.Plo + -rm -f coredump/$(DEPDIR)/ucd_file_table.Plo + -rm -f dwarf/$(DEPDIR)/Gexpr.Plo + -rm -f dwarf/$(DEPDIR)/Gfde.Plo + -rm -f dwarf/$(DEPDIR)/Gfind_proc_info-lsb.Plo + -rm -f dwarf/$(DEPDIR)/Gfind_unwind_table.Plo + -rm -f dwarf/$(DEPDIR)/Gget_proc_info_in_range.Plo + -rm -f dwarf/$(DEPDIR)/Gparser.Plo + -rm -f dwarf/$(DEPDIR)/Gpe.Plo + -rm -f dwarf/$(DEPDIR)/Lexpr.Plo + -rm -f dwarf/$(DEPDIR)/Lfde.Plo + -rm -f dwarf/$(DEPDIR)/Lfind_proc_info-lsb.Plo + -rm -f dwarf/$(DEPDIR)/Lfind_unwind_table.Plo + -rm -f dwarf/$(DEPDIR)/Lget_proc_info_in_range.Plo + -rm -f dwarf/$(DEPDIR)/Lparser.Plo + -rm -f dwarf/$(DEPDIR)/Lpe.Plo + -rm -f dwarf/$(DEPDIR)/global.Plo + -rm -f hppa/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f hppa/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f hppa/$(DEPDIR)/Gget_proc_info.Plo + -rm -f hppa/$(DEPDIR)/Gget_save_loc.Plo + -rm -f hppa/$(DEPDIR)/Gglobal.Plo + -rm -f hppa/$(DEPDIR)/Ginit.Plo + -rm -f hppa/$(DEPDIR)/Ginit_local.Plo + -rm -f hppa/$(DEPDIR)/Ginit_remote.Plo + -rm -f hppa/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f hppa/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f hppa/$(DEPDIR)/Gregs.Plo + -rm -f hppa/$(DEPDIR)/Gresume.Plo + -rm -f hppa/$(DEPDIR)/Gstep.Plo + -rm -f hppa/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f hppa/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f hppa/$(DEPDIR)/Lget_proc_info.Plo + -rm -f hppa/$(DEPDIR)/Lget_save_loc.Plo + -rm -f hppa/$(DEPDIR)/Lglobal.Plo + -rm -f hppa/$(DEPDIR)/Linit.Plo + -rm -f hppa/$(DEPDIR)/Linit_local.Plo + -rm -f hppa/$(DEPDIR)/Linit_remote.Plo + -rm -f hppa/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f hppa/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f hppa/$(DEPDIR)/Lregs.Plo + -rm -f hppa/$(DEPDIR)/Lresume.Plo + -rm -f hppa/$(DEPDIR)/Lstep.Plo + -rm -f hppa/$(DEPDIR)/getcontext.Plo + -rm -f hppa/$(DEPDIR)/regname.Plo + -rm -f hppa/$(DEPDIR)/setcontext.Plo + -rm -f hppa/$(DEPDIR)/siglongjmp.Plo + -rm -f ia64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f ia64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f ia64/$(DEPDIR)/Gfind_unwind_table.Plo + -rm -f ia64/$(DEPDIR)/Gget_proc_info.Plo + -rm -f ia64/$(DEPDIR)/Gget_save_loc.Plo + -rm -f ia64/$(DEPDIR)/Gglobal.Plo + -rm -f ia64/$(DEPDIR)/Ginit.Plo + -rm -f ia64/$(DEPDIR)/Ginit_local.Plo + -rm -f ia64/$(DEPDIR)/Ginit_remote.Plo + -rm -f ia64/$(DEPDIR)/Ginstall_cursor.Plo + -rm -f ia64/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f ia64/$(DEPDIR)/Gparser.Plo + -rm -f ia64/$(DEPDIR)/Grbs.Plo + -rm -f ia64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f ia64/$(DEPDIR)/Gregs.Plo + -rm -f ia64/$(DEPDIR)/Gresume.Plo + -rm -f ia64/$(DEPDIR)/Gscript.Plo + -rm -f ia64/$(DEPDIR)/Gstep.Plo + -rm -f ia64/$(DEPDIR)/Gtables.Plo + -rm -f ia64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f ia64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f ia64/$(DEPDIR)/Lfind_unwind_table.Plo + -rm -f ia64/$(DEPDIR)/Lget_proc_info.Plo + -rm -f ia64/$(DEPDIR)/Lget_save_loc.Plo + -rm -f ia64/$(DEPDIR)/Lglobal.Plo + -rm -f ia64/$(DEPDIR)/Linit.Plo + -rm -f ia64/$(DEPDIR)/Linit_local.Plo + -rm -f ia64/$(DEPDIR)/Linit_remote.Plo + -rm -f ia64/$(DEPDIR)/Linstall_cursor.Plo + -rm -f ia64/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f ia64/$(DEPDIR)/Lparser.Plo + -rm -f ia64/$(DEPDIR)/Lrbs.Plo + -rm -f ia64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f ia64/$(DEPDIR)/Lregs.Plo + -rm -f ia64/$(DEPDIR)/Lresume.Plo + -rm -f ia64/$(DEPDIR)/Lscript.Plo + -rm -f ia64/$(DEPDIR)/Lstep.Plo + -rm -f ia64/$(DEPDIR)/Ltables.Plo + -rm -f ia64/$(DEPDIR)/dyn_info_list.Plo + -rm -f ia64/$(DEPDIR)/getcontext.Plo + -rm -f ia64/$(DEPDIR)/longjmp.Plo + -rm -f ia64/$(DEPDIR)/regname.Plo + -rm -f ia64/$(DEPDIR)/setjmp.Plo + -rm -f ia64/$(DEPDIR)/siglongjmp.Plo + -rm -f ia64/$(DEPDIR)/sigsetjmp.Plo + -rm -f loongarch64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f loongarch64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f loongarch64/$(DEPDIR)/Gget_proc_info.Plo + -rm -f loongarch64/$(DEPDIR)/Gget_save_loc.Plo + -rm -f loongarch64/$(DEPDIR)/Gglobal.Plo + -rm -f loongarch64/$(DEPDIR)/Ginit.Plo + -rm -f loongarch64/$(DEPDIR)/Ginit_local.Plo + -rm -f loongarch64/$(DEPDIR)/Ginit_remote.Plo + -rm -f loongarch64/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f loongarch64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f loongarch64/$(DEPDIR)/Gregs.Plo + -rm -f loongarch64/$(DEPDIR)/Gresume.Plo + -rm -f loongarch64/$(DEPDIR)/Gstep.Plo + -rm -f loongarch64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f loongarch64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f loongarch64/$(DEPDIR)/Lget_proc_info.Plo + -rm -f loongarch64/$(DEPDIR)/Lget_save_loc.Plo + -rm -f loongarch64/$(DEPDIR)/Lglobal.Plo + -rm -f loongarch64/$(DEPDIR)/Linit.Plo + -rm -f loongarch64/$(DEPDIR)/Linit_local.Plo + -rm -f loongarch64/$(DEPDIR)/Linit_remote.Plo + -rm -f loongarch64/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f loongarch64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f loongarch64/$(DEPDIR)/Lregs.Plo + -rm -f loongarch64/$(DEPDIR)/Lresume.Plo + -rm -f loongarch64/$(DEPDIR)/Lstep.Plo + -rm -f loongarch64/$(DEPDIR)/getcontext.Plo + -rm -f loongarch64/$(DEPDIR)/is_fpreg.Plo + -rm -f loongarch64/$(DEPDIR)/regname.Plo + -rm -f loongarch64/$(DEPDIR)/siglongjmp.Plo + -rm -f mi/$(DEPDIR)/Gaddress_validator.Plo + -rm -f mi/$(DEPDIR)/Gdestroy_addr_space.Plo + -rm -f mi/$(DEPDIR)/Gdyn-extract.Plo + -rm -f mi/$(DEPDIR)/Gdyn-remote.Plo + -rm -f mi/$(DEPDIR)/Gfind_dynamic_proc_info.Plo + -rm -f mi/$(DEPDIR)/Gget_accessors.Plo + -rm -f mi/$(DEPDIR)/Gget_elf_filename.Plo + -rm -f mi/$(DEPDIR)/Gget_fpreg.Plo + -rm -f mi/$(DEPDIR)/Gget_proc_info_by_ip.Plo + -rm -f mi/$(DEPDIR)/Gget_proc_name.Plo + -rm -f mi/$(DEPDIR)/Gget_reg.Plo + -rm -f mi/$(DEPDIR)/Gput_dynamic_unwind_info.Plo + -rm -f mi/$(DEPDIR)/Gset_cache_size.Plo + -rm -f mi/$(DEPDIR)/Gset_caching_policy.Plo + -rm -f mi/$(DEPDIR)/Gset_fpreg.Plo + -rm -f mi/$(DEPDIR)/Gset_iterate_phdr_function.Plo + -rm -f mi/$(DEPDIR)/Gset_reg.Plo + -rm -f mi/$(DEPDIR)/Laddress_validator.Plo + -rm -f mi/$(DEPDIR)/Ldestroy_addr_space.Plo + -rm -f mi/$(DEPDIR)/Ldyn-extract.Plo + -rm -f mi/$(DEPDIR)/Lfind_dynamic_proc_info.Plo + -rm -f mi/$(DEPDIR)/Lget_accessors.Plo + -rm -f mi/$(DEPDIR)/Lget_elf_filename.Plo + -rm -f mi/$(DEPDIR)/Lget_fpreg.Plo + -rm -f mi/$(DEPDIR)/Lget_proc_info_by_ip.Plo + -rm -f mi/$(DEPDIR)/Lget_proc_name.Plo + -rm -f mi/$(DEPDIR)/Lget_reg.Plo + -rm -f mi/$(DEPDIR)/Lput_dynamic_unwind_info.Plo + -rm -f mi/$(DEPDIR)/Lset_cache_size.Plo + -rm -f mi/$(DEPDIR)/Lset_caching_policy.Plo + -rm -f mi/$(DEPDIR)/Lset_fpreg.Plo + -rm -f mi/$(DEPDIR)/Lset_iterate_phdr_function.Plo + -rm -f mi/$(DEPDIR)/Lset_reg.Plo + -rm -f mi/$(DEPDIR)/_ReadSLEB.Plo + -rm -f mi/$(DEPDIR)/_ReadULEB.Plo + -rm -f mi/$(DEPDIR)/backtrace.Plo + -rm -f mi/$(DEPDIR)/dyn-cancel.Plo + -rm -f mi/$(DEPDIR)/dyn-info-list.Plo + -rm -f mi/$(DEPDIR)/dyn-register.Plo + -rm -f mi/$(DEPDIR)/flush_cache.Plo + -rm -f mi/$(DEPDIR)/init.Plo + -rm -f mi/$(DEPDIR)/mempool.Plo + -rm -f mi/$(DEPDIR)/strerror.Plo + -rm -f mips/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f mips/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f mips/$(DEPDIR)/Gget_proc_info.Plo + -rm -f mips/$(DEPDIR)/Gget_save_loc.Plo + -rm -f mips/$(DEPDIR)/Gglobal.Plo + -rm -f mips/$(DEPDIR)/Ginit.Plo + -rm -f mips/$(DEPDIR)/Ginit_local.Plo + -rm -f mips/$(DEPDIR)/Ginit_remote.Plo + -rm -f mips/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f mips/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f mips/$(DEPDIR)/Gregs.Plo + -rm -f mips/$(DEPDIR)/Gresume.Plo + -rm -f mips/$(DEPDIR)/Gstep.Plo + -rm -f mips/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f mips/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f mips/$(DEPDIR)/Lget_proc_info.Plo + -rm -f mips/$(DEPDIR)/Lget_save_loc.Plo + -rm -f mips/$(DEPDIR)/Lglobal.Plo + -rm -f mips/$(DEPDIR)/Linit.Plo + -rm -f mips/$(DEPDIR)/Linit_local.Plo + -rm -f mips/$(DEPDIR)/Linit_remote.Plo + -rm -f mips/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f mips/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f mips/$(DEPDIR)/Lregs.Plo + -rm -f mips/$(DEPDIR)/Lresume.Plo + -rm -f mips/$(DEPDIR)/Lstep.Plo + -rm -f mips/$(DEPDIR)/getcontext.Plo + -rm -f mips/$(DEPDIR)/is_fpreg.Plo + -rm -f mips/$(DEPDIR)/regname.Plo + -rm -f mips/$(DEPDIR)/siglongjmp.Plo + -rm -f nto/$(DEPDIR)/unw_nto_access_fpreg.Plo + -rm -f nto/$(DEPDIR)/unw_nto_access_mem.Plo + -rm -f nto/$(DEPDIR)/unw_nto_access_reg.Plo + -rm -f nto/$(DEPDIR)/unw_nto_accessors.Plo + -rm -f nto/$(DEPDIR)/unw_nto_create.Plo + -rm -f nto/$(DEPDIR)/unw_nto_destroy.Plo + -rm -f nto/$(DEPDIR)/unw_nto_elf.Plo + -rm -f nto/$(DEPDIR)/unw_nto_find_proc_info.Plo + -rm -f nto/$(DEPDIR)/unw_nto_get_dyn_info_list_addr.Plo + -rm -f nto/$(DEPDIR)/unw_nto_get_elf_filename.Plo + -rm -f nto/$(DEPDIR)/unw_nto_get_proc_name.Plo + -rm -f nto/$(DEPDIR)/unw_nto_put_unwind_info.Plo + -rm -f nto/$(DEPDIR)/unw_nto_resume.Plo + -rm -f ppc/$(DEPDIR)/Gget_proc_info.Plo + -rm -f ppc/$(DEPDIR)/Gget_save_loc.Plo + -rm -f ppc/$(DEPDIR)/Ginit_local.Plo + -rm -f ppc/$(DEPDIR)/Ginit_remote.Plo + -rm -f ppc/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f ppc/$(DEPDIR)/Lget_proc_info.Plo + -rm -f ppc/$(DEPDIR)/Lget_save_loc.Plo + -rm -f ppc/$(DEPDIR)/Linit_local.Plo + -rm -f ppc/$(DEPDIR)/Linit_remote.Plo + -rm -f ppc/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f ppc/$(DEPDIR)/longjmp.Plo + -rm -f ppc/$(DEPDIR)/siglongjmp.Plo + -rm -f ppc32/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f ppc32/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f ppc32/$(DEPDIR)/Gglobal.Plo + -rm -f ppc32/$(DEPDIR)/Ginit.Plo + -rm -f ppc32/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f ppc32/$(DEPDIR)/Gregs.Plo + -rm -f ppc32/$(DEPDIR)/Gresume.Plo + -rm -f ppc32/$(DEPDIR)/Gstep.Plo + -rm -f ppc32/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f ppc32/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f ppc32/$(DEPDIR)/Lglobal.Plo + -rm -f ppc32/$(DEPDIR)/Linit.Plo + -rm -f ppc32/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f ppc32/$(DEPDIR)/Lregs.Plo + -rm -f ppc32/$(DEPDIR)/Lresume.Plo + -rm -f ppc32/$(DEPDIR)/Lstep.Plo + -rm -f ppc32/$(DEPDIR)/get_func_addr.Plo + -rm -f ppc32/$(DEPDIR)/is_fpreg.Plo + -rm -f ppc32/$(DEPDIR)/regname.Plo + -rm -f ppc64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f ppc64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f ppc64/$(DEPDIR)/Gglobal.Plo + -rm -f ppc64/$(DEPDIR)/Ginit.Plo + -rm -f ppc64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f ppc64/$(DEPDIR)/Gregs.Plo + -rm -f ppc64/$(DEPDIR)/Gresume.Plo + -rm -f ppc64/$(DEPDIR)/Gstep.Plo + -rm -f ppc64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f ppc64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f ppc64/$(DEPDIR)/Lglobal.Plo + -rm -f ppc64/$(DEPDIR)/Linit.Plo + -rm -f ppc64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f ppc64/$(DEPDIR)/Lregs.Plo + -rm -f ppc64/$(DEPDIR)/Lresume.Plo + -rm -f ppc64/$(DEPDIR)/Lstep.Plo + -rm -f ppc64/$(DEPDIR)/get_func_addr.Plo + -rm -f ppc64/$(DEPDIR)/is_fpreg.Plo + -rm -f ppc64/$(DEPDIR)/regname.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_access_fpreg.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_access_mem.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_access_reg.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_accessors.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_create.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_destroy.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_elf.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_find_proc_info.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_get_elf_filename.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_get_proc_name.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_put_unwind_info.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_reg_offset.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_resume.Plo + -rm -f riscv/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f riscv/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f riscv/$(DEPDIR)/Gget_proc_info.Plo + -rm -f riscv/$(DEPDIR)/Gget_save_loc.Plo + -rm -f riscv/$(DEPDIR)/Gglobal.Plo + -rm -f riscv/$(DEPDIR)/Ginit.Plo + -rm -f riscv/$(DEPDIR)/Ginit_local.Plo + -rm -f riscv/$(DEPDIR)/Ginit_remote.Plo + -rm -f riscv/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f riscv/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f riscv/$(DEPDIR)/Gregs.Plo + -rm -f riscv/$(DEPDIR)/Gresume.Plo + -rm -f riscv/$(DEPDIR)/Gstep.Plo + -rm -f riscv/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f riscv/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f riscv/$(DEPDIR)/Lget_proc_info.Plo + -rm -f riscv/$(DEPDIR)/Lget_save_loc.Plo + -rm -f riscv/$(DEPDIR)/Lglobal.Plo + -rm -f riscv/$(DEPDIR)/Linit.Plo + -rm -f riscv/$(DEPDIR)/Linit_local.Plo + -rm -f riscv/$(DEPDIR)/Linit_remote.Plo + -rm -f riscv/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f riscv/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f riscv/$(DEPDIR)/Lregs.Plo + -rm -f riscv/$(DEPDIR)/Lresume.Plo + -rm -f riscv/$(DEPDIR)/Lstep.Plo + -rm -f riscv/$(DEPDIR)/getcontext.Plo + -rm -f riscv/$(DEPDIR)/is_fpreg.Plo + -rm -f riscv/$(DEPDIR)/regname.Plo + -rm -f riscv/$(DEPDIR)/setcontext.Plo + -rm -f riscv/$(DEPDIR)/siglongjmp.Plo + -rm -f s390x/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f s390x/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f s390x/$(DEPDIR)/Gget_proc_info.Plo + -rm -f s390x/$(DEPDIR)/Gget_save_loc.Plo + -rm -f s390x/$(DEPDIR)/Gglobal.Plo + -rm -f s390x/$(DEPDIR)/Ginit.Plo + -rm -f s390x/$(DEPDIR)/Ginit_local.Plo + -rm -f s390x/$(DEPDIR)/Ginit_remote.Plo + -rm -f s390x/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f s390x/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f s390x/$(DEPDIR)/Gregs.Plo + -rm -f s390x/$(DEPDIR)/Gresume.Plo + -rm -f s390x/$(DEPDIR)/Gstep.Plo + -rm -f s390x/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f s390x/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f s390x/$(DEPDIR)/Lget_proc_info.Plo + -rm -f s390x/$(DEPDIR)/Lget_save_loc.Plo + -rm -f s390x/$(DEPDIR)/Lglobal.Plo + -rm -f s390x/$(DEPDIR)/Linit.Plo + -rm -f s390x/$(DEPDIR)/Linit_local.Plo + -rm -f s390x/$(DEPDIR)/Linit_remote.Plo + -rm -f s390x/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f s390x/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f s390x/$(DEPDIR)/Lregs.Plo + -rm -f s390x/$(DEPDIR)/Lresume.Plo + -rm -f s390x/$(DEPDIR)/Lstep.Plo + -rm -f s390x/$(DEPDIR)/getcontext.Plo + -rm -f s390x/$(DEPDIR)/is_fpreg.Plo + -rm -f s390x/$(DEPDIR)/regname.Plo + -rm -f s390x/$(DEPDIR)/setcontext.Plo + -rm -f setjmp/$(DEPDIR)/longjmp.Plo + -rm -f setjmp/$(DEPDIR)/siglongjmp.Plo + -rm -f sh/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f sh/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f sh/$(DEPDIR)/Gget_proc_info.Plo + -rm -f sh/$(DEPDIR)/Gget_save_loc.Plo + -rm -f sh/$(DEPDIR)/Gglobal.Plo + -rm -f sh/$(DEPDIR)/Ginit.Plo + -rm -f sh/$(DEPDIR)/Ginit_local.Plo + -rm -f sh/$(DEPDIR)/Ginit_remote.Plo + -rm -f sh/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f sh/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f sh/$(DEPDIR)/Gregs.Plo + -rm -f sh/$(DEPDIR)/Gresume.Plo + -rm -f sh/$(DEPDIR)/Gstep.Plo + -rm -f sh/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f sh/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f sh/$(DEPDIR)/Lget_proc_info.Plo + -rm -f sh/$(DEPDIR)/Lget_save_loc.Plo + -rm -f sh/$(DEPDIR)/Lglobal.Plo + -rm -f sh/$(DEPDIR)/Linit.Plo + -rm -f sh/$(DEPDIR)/Linit_local.Plo + -rm -f sh/$(DEPDIR)/Linit_remote.Plo + -rm -f sh/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f sh/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f sh/$(DEPDIR)/Lregs.Plo + -rm -f sh/$(DEPDIR)/Lresume.Plo + -rm -f sh/$(DEPDIR)/Lstep.Plo + -rm -f sh/$(DEPDIR)/is_fpreg.Plo + -rm -f sh/$(DEPDIR)/regname.Plo + -rm -f sh/$(DEPDIR)/siglongjmp.Plo + -rm -f unwind/$(DEPDIR)/Backtrace.Plo + -rm -f unwind/$(DEPDIR)/DeleteException.Plo + -rm -f unwind/$(DEPDIR)/FindEnclosingFunction.Plo + -rm -f unwind/$(DEPDIR)/ForcedUnwind.Plo + -rm -f unwind/$(DEPDIR)/GetBSP.Plo + -rm -f unwind/$(DEPDIR)/GetCFA.Plo + -rm -f unwind/$(DEPDIR)/GetDataRelBase.Plo + -rm -f unwind/$(DEPDIR)/GetGR.Plo + -rm -f unwind/$(DEPDIR)/GetIP.Plo + -rm -f unwind/$(DEPDIR)/GetIPInfo.Plo + -rm -f unwind/$(DEPDIR)/GetLanguageSpecificData.Plo + -rm -f unwind/$(DEPDIR)/GetRegionStart.Plo + -rm -f unwind/$(DEPDIR)/GetTextRelBase.Plo + -rm -f unwind/$(DEPDIR)/RaiseException.Plo + -rm -f unwind/$(DEPDIR)/Resume.Plo + -rm -f unwind/$(DEPDIR)/Resume_or_Rethrow.Plo + -rm -f unwind/$(DEPDIR)/SetGR.Plo + -rm -f unwind/$(DEPDIR)/SetIP.Plo + -rm -f x86/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f x86/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f x86/$(DEPDIR)/Gget_proc_info.Plo + -rm -f x86/$(DEPDIR)/Gget_save_loc.Plo + -rm -f x86/$(DEPDIR)/Gglobal.Plo + -rm -f x86/$(DEPDIR)/Ginit.Plo + -rm -f x86/$(DEPDIR)/Ginit_local.Plo + -rm -f x86/$(DEPDIR)/Ginit_remote.Plo + -rm -f x86/$(DEPDIR)/Gos-freebsd.Plo + -rm -f x86/$(DEPDIR)/Gos-linux.Plo + -rm -f x86/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f x86/$(DEPDIR)/Gregs.Plo + -rm -f x86/$(DEPDIR)/Gresume.Plo + -rm -f x86/$(DEPDIR)/Gstep.Plo + -rm -f x86/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f x86/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f x86/$(DEPDIR)/Lget_proc_info.Plo + -rm -f x86/$(DEPDIR)/Lget_save_loc.Plo + -rm -f x86/$(DEPDIR)/Lglobal.Plo + -rm -f x86/$(DEPDIR)/Linit.Plo + -rm -f x86/$(DEPDIR)/Linit_local.Plo + -rm -f x86/$(DEPDIR)/Linit_remote.Plo + -rm -f x86/$(DEPDIR)/Los-freebsd.Plo + -rm -f x86/$(DEPDIR)/Los-linux.Plo + -rm -f x86/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f x86/$(DEPDIR)/Lregs.Plo + -rm -f x86/$(DEPDIR)/Lresume.Plo + -rm -f x86/$(DEPDIR)/Lstep.Plo + -rm -f x86/$(DEPDIR)/getcontext-freebsd.Plo + -rm -f x86/$(DEPDIR)/getcontext-linux.Plo + -rm -f x86/$(DEPDIR)/is_fpreg.Plo + -rm -f x86/$(DEPDIR)/longjmp.Plo + -rm -f x86/$(DEPDIR)/regname.Plo + -rm -f x86/$(DEPDIR)/siglongjmp.Plo + -rm -f x86_64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f x86_64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f x86_64/$(DEPDIR)/Gget_proc_info.Plo + -rm -f x86_64/$(DEPDIR)/Gget_save_loc.Plo + -rm -f x86_64/$(DEPDIR)/Gglobal.Plo + -rm -f x86_64/$(DEPDIR)/Ginit.Plo + -rm -f x86_64/$(DEPDIR)/Ginit_local.Plo + -rm -f x86_64/$(DEPDIR)/Ginit_remote.Plo + -rm -f x86_64/$(DEPDIR)/Gos-freebsd.Plo + -rm -f x86_64/$(DEPDIR)/Gos-linux.Plo + -rm -f x86_64/$(DEPDIR)/Gos-qnx.Plo + -rm -f x86_64/$(DEPDIR)/Gos-solaris.Plo + -rm -f x86_64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f x86_64/$(DEPDIR)/Gregs.Plo + -rm -f x86_64/$(DEPDIR)/Gresume.Plo + -rm -f x86_64/$(DEPDIR)/Gstash_frame.Plo + -rm -f x86_64/$(DEPDIR)/Gstep.Plo + -rm -f x86_64/$(DEPDIR)/Gtrace.Plo + -rm -f x86_64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f x86_64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f x86_64/$(DEPDIR)/Lget_proc_info.Plo + -rm -f x86_64/$(DEPDIR)/Lget_save_loc.Plo + -rm -f x86_64/$(DEPDIR)/Lglobal.Plo + -rm -f x86_64/$(DEPDIR)/Linit.Plo + -rm -f x86_64/$(DEPDIR)/Linit_local.Plo + -rm -f x86_64/$(DEPDIR)/Linit_remote.Plo + -rm -f x86_64/$(DEPDIR)/Los-freebsd.Plo + -rm -f x86_64/$(DEPDIR)/Los-linux.Plo + -rm -f x86_64/$(DEPDIR)/Los-qnx.Plo + -rm -f x86_64/$(DEPDIR)/Los-solaris.Plo + -rm -f x86_64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f x86_64/$(DEPDIR)/Lregs.Plo + -rm -f x86_64/$(DEPDIR)/Lresume.Plo + -rm -f x86_64/$(DEPDIR)/Lstash_frame.Plo + -rm -f x86_64/$(DEPDIR)/Lstep.Plo + -rm -f x86_64/$(DEPDIR)/Ltrace.Plo + -rm -f x86_64/$(DEPDIR)/getcontext.Plo + -rm -f x86_64/$(DEPDIR)/is_fpreg.Plo + -rm -f x86_64/$(DEPDIR)/longjmp.Plo + -rm -f x86_64/$(DEPDIR)/regname.Plo + -rm -f x86_64/$(DEPDIR)/setcontext.Plo + -rm -f x86_64/$(DEPDIR)/siglongjmp.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -4190,7 +5636,575 @@ installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arm/$(DEPDIR) coredump/$(DEPDIR) dwarf/$(DEPDIR) hppa/$(DEPDIR) ia64/$(DEPDIR) loongarch64/$(DEPDIR) mi/$(DEPDIR) mips/$(DEPDIR) ppc/$(DEPDIR) ppc32/$(DEPDIR) ppc64/$(DEPDIR) ptrace/$(DEPDIR) riscv/$(DEPDIR) s390x/$(DEPDIR) setjmp/$(DEPDIR) sh/$(DEPDIR) tilegx/$(DEPDIR) unwind/$(DEPDIR) x86/$(DEPDIR) x86_64/$(DEPDIR) + -rm -f ./$(DEPDIR)/dl-iterate-phdr.Plo + -rm -f ./$(DEPDIR)/elf32.Plo + -rm -f ./$(DEPDIR)/elf64.Plo + -rm -f ./$(DEPDIR)/elfxx.Plo + -rm -f ./$(DEPDIR)/os-freebsd.Plo + -rm -f ./$(DEPDIR)/os-hpux.Plo + -rm -f ./$(DEPDIR)/os-linux.Plo + -rm -f ./$(DEPDIR)/os-qnx.Plo + -rm -f ./$(DEPDIR)/os-solaris.Plo + -rm -f aarch64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f aarch64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f aarch64/$(DEPDIR)/Gget_proc_info.Plo + -rm -f aarch64/$(DEPDIR)/Gget_save_loc.Plo + -rm -f aarch64/$(DEPDIR)/Gglobal.Plo + -rm -f aarch64/$(DEPDIR)/Ginit.Plo + -rm -f aarch64/$(DEPDIR)/Ginit_local.Plo + -rm -f aarch64/$(DEPDIR)/Ginit_remote.Plo + -rm -f aarch64/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f aarch64/$(DEPDIR)/Gos-freebsd.Plo + -rm -f aarch64/$(DEPDIR)/Gos-linux.Plo + -rm -f aarch64/$(DEPDIR)/Gos-qnx.Plo + -rm -f aarch64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f aarch64/$(DEPDIR)/Gregs.Plo + -rm -f aarch64/$(DEPDIR)/Gresume.Plo + -rm -f aarch64/$(DEPDIR)/Gstash_frame.Plo + -rm -f aarch64/$(DEPDIR)/Gstep.Plo + -rm -f aarch64/$(DEPDIR)/Gtrace.Plo + -rm -f aarch64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f aarch64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f aarch64/$(DEPDIR)/Lget_proc_info.Plo + -rm -f aarch64/$(DEPDIR)/Lget_save_loc.Plo + -rm -f aarch64/$(DEPDIR)/Lglobal.Plo + -rm -f aarch64/$(DEPDIR)/Linit.Plo + -rm -f aarch64/$(DEPDIR)/Linit_local.Plo + -rm -f aarch64/$(DEPDIR)/Linit_remote.Plo + -rm -f aarch64/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f aarch64/$(DEPDIR)/Los-freebsd.Plo + -rm -f aarch64/$(DEPDIR)/Los-linux.Plo + -rm -f aarch64/$(DEPDIR)/Los-qnx.Plo + -rm -f aarch64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f aarch64/$(DEPDIR)/Lregs.Plo + -rm -f aarch64/$(DEPDIR)/Lresume.Plo + -rm -f aarch64/$(DEPDIR)/Lstash_frame.Plo + -rm -f aarch64/$(DEPDIR)/Lstep.Plo + -rm -f aarch64/$(DEPDIR)/Ltrace.Plo + -rm -f aarch64/$(DEPDIR)/getcontext.Plo + -rm -f aarch64/$(DEPDIR)/is_fpreg.Plo + -rm -f aarch64/$(DEPDIR)/longjmp.Plo + -rm -f aarch64/$(DEPDIR)/regname.Plo + -rm -f aarch64/$(DEPDIR)/setcontext.Plo + -rm -f aarch64/$(DEPDIR)/siglongjmp.Plo + -rm -f arm/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f arm/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f arm/$(DEPDIR)/Gex_tables.Plo + -rm -f arm/$(DEPDIR)/Gget_proc_info.Plo + -rm -f arm/$(DEPDIR)/Gget_save_loc.Plo + -rm -f arm/$(DEPDIR)/Gglobal.Plo + -rm -f arm/$(DEPDIR)/Ginit.Plo + -rm -f arm/$(DEPDIR)/Ginit_local.Plo + -rm -f arm/$(DEPDIR)/Ginit_remote.Plo + -rm -f arm/$(DEPDIR)/Gos-freebsd.Plo + -rm -f arm/$(DEPDIR)/Gos-linux.Plo + -rm -f arm/$(DEPDIR)/Gos-other.Plo + -rm -f arm/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f arm/$(DEPDIR)/Gregs.Plo + -rm -f arm/$(DEPDIR)/Gresume.Plo + -rm -f arm/$(DEPDIR)/Gstash_frame.Plo + -rm -f arm/$(DEPDIR)/Gstep.Plo + -rm -f arm/$(DEPDIR)/Gtrace.Plo + -rm -f arm/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f arm/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f arm/$(DEPDIR)/Lex_tables.Plo + -rm -f arm/$(DEPDIR)/Lget_proc_info.Plo + -rm -f arm/$(DEPDIR)/Lget_save_loc.Plo + -rm -f arm/$(DEPDIR)/Lglobal.Plo + -rm -f arm/$(DEPDIR)/Linit.Plo + -rm -f arm/$(DEPDIR)/Linit_local.Plo + -rm -f arm/$(DEPDIR)/Linit_remote.Plo + -rm -f arm/$(DEPDIR)/Los-freebsd.Plo + -rm -f arm/$(DEPDIR)/Los-linux.Plo + -rm -f arm/$(DEPDIR)/Los-other.Plo + -rm -f arm/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f arm/$(DEPDIR)/Lregs.Plo + -rm -f arm/$(DEPDIR)/Lresume.Plo + -rm -f arm/$(DEPDIR)/Lstash_frame.Plo + -rm -f arm/$(DEPDIR)/Lstep.Plo + -rm -f arm/$(DEPDIR)/Ltrace.Plo + -rm -f arm/$(DEPDIR)/getcontext.Plo + -rm -f arm/$(DEPDIR)/is_fpreg.Plo + -rm -f arm/$(DEPDIR)/regname.Plo + -rm -f arm/$(DEPDIR)/siglongjmp.Plo + -rm -f coredump/$(DEPDIR)/_UCD_access_mem.Plo + -rm -f coredump/$(DEPDIR)/_UCD_access_reg_freebsd.Plo + -rm -f coredump/$(DEPDIR)/_UCD_access_reg_linux.Plo + -rm -f coredump/$(DEPDIR)/_UCD_access_reg_qnx.Plo + -rm -f coredump/$(DEPDIR)/_UCD_accessors.Plo + -rm -f coredump/$(DEPDIR)/_UCD_corefile_elf.Plo + -rm -f coredump/$(DEPDIR)/_UCD_create.Plo + -rm -f coredump/$(DEPDIR)/_UCD_destroy.Plo + -rm -f coredump/$(DEPDIR)/_UCD_elf_map_image.Plo + -rm -f coredump/$(DEPDIR)/_UCD_find_proc_info.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_elf_filename.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_mapinfo_generic.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_mapinfo_linux.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_mapinfo_qnx.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_proc_name.Plo + -rm -f coredump/$(DEPDIR)/_UCD_get_threadinfo_prstatus.Plo + -rm -f coredump/$(DEPDIR)/_UPT_access_fpreg.Plo + -rm -f coredump/$(DEPDIR)/_UPT_elf.Plo + -rm -f coredump/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo + -rm -f coredump/$(DEPDIR)/_UPT_put_unwind_info.Plo + -rm -f coredump/$(DEPDIR)/_UPT_resume.Plo + -rm -f coredump/$(DEPDIR)/ucd_file_table.Plo + -rm -f dwarf/$(DEPDIR)/Gexpr.Plo + -rm -f dwarf/$(DEPDIR)/Gfde.Plo + -rm -f dwarf/$(DEPDIR)/Gfind_proc_info-lsb.Plo + -rm -f dwarf/$(DEPDIR)/Gfind_unwind_table.Plo + -rm -f dwarf/$(DEPDIR)/Gget_proc_info_in_range.Plo + -rm -f dwarf/$(DEPDIR)/Gparser.Plo + -rm -f dwarf/$(DEPDIR)/Gpe.Plo + -rm -f dwarf/$(DEPDIR)/Lexpr.Plo + -rm -f dwarf/$(DEPDIR)/Lfde.Plo + -rm -f dwarf/$(DEPDIR)/Lfind_proc_info-lsb.Plo + -rm -f dwarf/$(DEPDIR)/Lfind_unwind_table.Plo + -rm -f dwarf/$(DEPDIR)/Lget_proc_info_in_range.Plo + -rm -f dwarf/$(DEPDIR)/Lparser.Plo + -rm -f dwarf/$(DEPDIR)/Lpe.Plo + -rm -f dwarf/$(DEPDIR)/global.Plo + -rm -f hppa/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f hppa/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f hppa/$(DEPDIR)/Gget_proc_info.Plo + -rm -f hppa/$(DEPDIR)/Gget_save_loc.Plo + -rm -f hppa/$(DEPDIR)/Gglobal.Plo + -rm -f hppa/$(DEPDIR)/Ginit.Plo + -rm -f hppa/$(DEPDIR)/Ginit_local.Plo + -rm -f hppa/$(DEPDIR)/Ginit_remote.Plo + -rm -f hppa/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f hppa/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f hppa/$(DEPDIR)/Gregs.Plo + -rm -f hppa/$(DEPDIR)/Gresume.Plo + -rm -f hppa/$(DEPDIR)/Gstep.Plo + -rm -f hppa/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f hppa/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f hppa/$(DEPDIR)/Lget_proc_info.Plo + -rm -f hppa/$(DEPDIR)/Lget_save_loc.Plo + -rm -f hppa/$(DEPDIR)/Lglobal.Plo + -rm -f hppa/$(DEPDIR)/Linit.Plo + -rm -f hppa/$(DEPDIR)/Linit_local.Plo + -rm -f hppa/$(DEPDIR)/Linit_remote.Plo + -rm -f hppa/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f hppa/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f hppa/$(DEPDIR)/Lregs.Plo + -rm -f hppa/$(DEPDIR)/Lresume.Plo + -rm -f hppa/$(DEPDIR)/Lstep.Plo + -rm -f hppa/$(DEPDIR)/getcontext.Plo + -rm -f hppa/$(DEPDIR)/regname.Plo + -rm -f hppa/$(DEPDIR)/setcontext.Plo + -rm -f hppa/$(DEPDIR)/siglongjmp.Plo + -rm -f ia64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f ia64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f ia64/$(DEPDIR)/Gfind_unwind_table.Plo + -rm -f ia64/$(DEPDIR)/Gget_proc_info.Plo + -rm -f ia64/$(DEPDIR)/Gget_save_loc.Plo + -rm -f ia64/$(DEPDIR)/Gglobal.Plo + -rm -f ia64/$(DEPDIR)/Ginit.Plo + -rm -f ia64/$(DEPDIR)/Ginit_local.Plo + -rm -f ia64/$(DEPDIR)/Ginit_remote.Plo + -rm -f ia64/$(DEPDIR)/Ginstall_cursor.Plo + -rm -f ia64/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f ia64/$(DEPDIR)/Gparser.Plo + -rm -f ia64/$(DEPDIR)/Grbs.Plo + -rm -f ia64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f ia64/$(DEPDIR)/Gregs.Plo + -rm -f ia64/$(DEPDIR)/Gresume.Plo + -rm -f ia64/$(DEPDIR)/Gscript.Plo + -rm -f ia64/$(DEPDIR)/Gstep.Plo + -rm -f ia64/$(DEPDIR)/Gtables.Plo + -rm -f ia64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f ia64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f ia64/$(DEPDIR)/Lfind_unwind_table.Plo + -rm -f ia64/$(DEPDIR)/Lget_proc_info.Plo + -rm -f ia64/$(DEPDIR)/Lget_save_loc.Plo + -rm -f ia64/$(DEPDIR)/Lglobal.Plo + -rm -f ia64/$(DEPDIR)/Linit.Plo + -rm -f ia64/$(DEPDIR)/Linit_local.Plo + -rm -f ia64/$(DEPDIR)/Linit_remote.Plo + -rm -f ia64/$(DEPDIR)/Linstall_cursor.Plo + -rm -f ia64/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f ia64/$(DEPDIR)/Lparser.Plo + -rm -f ia64/$(DEPDIR)/Lrbs.Plo + -rm -f ia64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f ia64/$(DEPDIR)/Lregs.Plo + -rm -f ia64/$(DEPDIR)/Lresume.Plo + -rm -f ia64/$(DEPDIR)/Lscript.Plo + -rm -f ia64/$(DEPDIR)/Lstep.Plo + -rm -f ia64/$(DEPDIR)/Ltables.Plo + -rm -f ia64/$(DEPDIR)/dyn_info_list.Plo + -rm -f ia64/$(DEPDIR)/getcontext.Plo + -rm -f ia64/$(DEPDIR)/longjmp.Plo + -rm -f ia64/$(DEPDIR)/regname.Plo + -rm -f ia64/$(DEPDIR)/setjmp.Plo + -rm -f ia64/$(DEPDIR)/siglongjmp.Plo + -rm -f ia64/$(DEPDIR)/sigsetjmp.Plo + -rm -f loongarch64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f loongarch64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f loongarch64/$(DEPDIR)/Gget_proc_info.Plo + -rm -f loongarch64/$(DEPDIR)/Gget_save_loc.Plo + -rm -f loongarch64/$(DEPDIR)/Gglobal.Plo + -rm -f loongarch64/$(DEPDIR)/Ginit.Plo + -rm -f loongarch64/$(DEPDIR)/Ginit_local.Plo + -rm -f loongarch64/$(DEPDIR)/Ginit_remote.Plo + -rm -f loongarch64/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f loongarch64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f loongarch64/$(DEPDIR)/Gregs.Plo + -rm -f loongarch64/$(DEPDIR)/Gresume.Plo + -rm -f loongarch64/$(DEPDIR)/Gstep.Plo + -rm -f loongarch64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f loongarch64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f loongarch64/$(DEPDIR)/Lget_proc_info.Plo + -rm -f loongarch64/$(DEPDIR)/Lget_save_loc.Plo + -rm -f loongarch64/$(DEPDIR)/Lglobal.Plo + -rm -f loongarch64/$(DEPDIR)/Linit.Plo + -rm -f loongarch64/$(DEPDIR)/Linit_local.Plo + -rm -f loongarch64/$(DEPDIR)/Linit_remote.Plo + -rm -f loongarch64/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f loongarch64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f loongarch64/$(DEPDIR)/Lregs.Plo + -rm -f loongarch64/$(DEPDIR)/Lresume.Plo + -rm -f loongarch64/$(DEPDIR)/Lstep.Plo + -rm -f loongarch64/$(DEPDIR)/getcontext.Plo + -rm -f loongarch64/$(DEPDIR)/is_fpreg.Plo + -rm -f loongarch64/$(DEPDIR)/regname.Plo + -rm -f loongarch64/$(DEPDIR)/siglongjmp.Plo + -rm -f mi/$(DEPDIR)/Gaddress_validator.Plo + -rm -f mi/$(DEPDIR)/Gdestroy_addr_space.Plo + -rm -f mi/$(DEPDIR)/Gdyn-extract.Plo + -rm -f mi/$(DEPDIR)/Gdyn-remote.Plo + -rm -f mi/$(DEPDIR)/Gfind_dynamic_proc_info.Plo + -rm -f mi/$(DEPDIR)/Gget_accessors.Plo + -rm -f mi/$(DEPDIR)/Gget_elf_filename.Plo + -rm -f mi/$(DEPDIR)/Gget_fpreg.Plo + -rm -f mi/$(DEPDIR)/Gget_proc_info_by_ip.Plo + -rm -f mi/$(DEPDIR)/Gget_proc_name.Plo + -rm -f mi/$(DEPDIR)/Gget_reg.Plo + -rm -f mi/$(DEPDIR)/Gput_dynamic_unwind_info.Plo + -rm -f mi/$(DEPDIR)/Gset_cache_size.Plo + -rm -f mi/$(DEPDIR)/Gset_caching_policy.Plo + -rm -f mi/$(DEPDIR)/Gset_fpreg.Plo + -rm -f mi/$(DEPDIR)/Gset_iterate_phdr_function.Plo + -rm -f mi/$(DEPDIR)/Gset_reg.Plo + -rm -f mi/$(DEPDIR)/Laddress_validator.Plo + -rm -f mi/$(DEPDIR)/Ldestroy_addr_space.Plo + -rm -f mi/$(DEPDIR)/Ldyn-extract.Plo + -rm -f mi/$(DEPDIR)/Lfind_dynamic_proc_info.Plo + -rm -f mi/$(DEPDIR)/Lget_accessors.Plo + -rm -f mi/$(DEPDIR)/Lget_elf_filename.Plo + -rm -f mi/$(DEPDIR)/Lget_fpreg.Plo + -rm -f mi/$(DEPDIR)/Lget_proc_info_by_ip.Plo + -rm -f mi/$(DEPDIR)/Lget_proc_name.Plo + -rm -f mi/$(DEPDIR)/Lget_reg.Plo + -rm -f mi/$(DEPDIR)/Lput_dynamic_unwind_info.Plo + -rm -f mi/$(DEPDIR)/Lset_cache_size.Plo + -rm -f mi/$(DEPDIR)/Lset_caching_policy.Plo + -rm -f mi/$(DEPDIR)/Lset_fpreg.Plo + -rm -f mi/$(DEPDIR)/Lset_iterate_phdr_function.Plo + -rm -f mi/$(DEPDIR)/Lset_reg.Plo + -rm -f mi/$(DEPDIR)/_ReadSLEB.Plo + -rm -f mi/$(DEPDIR)/_ReadULEB.Plo + -rm -f mi/$(DEPDIR)/backtrace.Plo + -rm -f mi/$(DEPDIR)/dyn-cancel.Plo + -rm -f mi/$(DEPDIR)/dyn-info-list.Plo + -rm -f mi/$(DEPDIR)/dyn-register.Plo + -rm -f mi/$(DEPDIR)/flush_cache.Plo + -rm -f mi/$(DEPDIR)/init.Plo + -rm -f mi/$(DEPDIR)/mempool.Plo + -rm -f mi/$(DEPDIR)/strerror.Plo + -rm -f mips/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f mips/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f mips/$(DEPDIR)/Gget_proc_info.Plo + -rm -f mips/$(DEPDIR)/Gget_save_loc.Plo + -rm -f mips/$(DEPDIR)/Gglobal.Plo + -rm -f mips/$(DEPDIR)/Ginit.Plo + -rm -f mips/$(DEPDIR)/Ginit_local.Plo + -rm -f mips/$(DEPDIR)/Ginit_remote.Plo + -rm -f mips/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f mips/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f mips/$(DEPDIR)/Gregs.Plo + -rm -f mips/$(DEPDIR)/Gresume.Plo + -rm -f mips/$(DEPDIR)/Gstep.Plo + -rm -f mips/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f mips/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f mips/$(DEPDIR)/Lget_proc_info.Plo + -rm -f mips/$(DEPDIR)/Lget_save_loc.Plo + -rm -f mips/$(DEPDIR)/Lglobal.Plo + -rm -f mips/$(DEPDIR)/Linit.Plo + -rm -f mips/$(DEPDIR)/Linit_local.Plo + -rm -f mips/$(DEPDIR)/Linit_remote.Plo + -rm -f mips/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f mips/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f mips/$(DEPDIR)/Lregs.Plo + -rm -f mips/$(DEPDIR)/Lresume.Plo + -rm -f mips/$(DEPDIR)/Lstep.Plo + -rm -f mips/$(DEPDIR)/getcontext.Plo + -rm -f mips/$(DEPDIR)/is_fpreg.Plo + -rm -f mips/$(DEPDIR)/regname.Plo + -rm -f mips/$(DEPDIR)/siglongjmp.Plo + -rm -f nto/$(DEPDIR)/unw_nto_access_fpreg.Plo + -rm -f nto/$(DEPDIR)/unw_nto_access_mem.Plo + -rm -f nto/$(DEPDIR)/unw_nto_access_reg.Plo + -rm -f nto/$(DEPDIR)/unw_nto_accessors.Plo + -rm -f nto/$(DEPDIR)/unw_nto_create.Plo + -rm -f nto/$(DEPDIR)/unw_nto_destroy.Plo + -rm -f nto/$(DEPDIR)/unw_nto_elf.Plo + -rm -f nto/$(DEPDIR)/unw_nto_find_proc_info.Plo + -rm -f nto/$(DEPDIR)/unw_nto_get_dyn_info_list_addr.Plo + -rm -f nto/$(DEPDIR)/unw_nto_get_elf_filename.Plo + -rm -f nto/$(DEPDIR)/unw_nto_get_proc_name.Plo + -rm -f nto/$(DEPDIR)/unw_nto_put_unwind_info.Plo + -rm -f nto/$(DEPDIR)/unw_nto_resume.Plo + -rm -f ppc/$(DEPDIR)/Gget_proc_info.Plo + -rm -f ppc/$(DEPDIR)/Gget_save_loc.Plo + -rm -f ppc/$(DEPDIR)/Ginit_local.Plo + -rm -f ppc/$(DEPDIR)/Ginit_remote.Plo + -rm -f ppc/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f ppc/$(DEPDIR)/Lget_proc_info.Plo + -rm -f ppc/$(DEPDIR)/Lget_save_loc.Plo + -rm -f ppc/$(DEPDIR)/Linit_local.Plo + -rm -f ppc/$(DEPDIR)/Linit_remote.Plo + -rm -f ppc/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f ppc/$(DEPDIR)/longjmp.Plo + -rm -f ppc/$(DEPDIR)/siglongjmp.Plo + -rm -f ppc32/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f ppc32/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f ppc32/$(DEPDIR)/Gglobal.Plo + -rm -f ppc32/$(DEPDIR)/Ginit.Plo + -rm -f ppc32/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f ppc32/$(DEPDIR)/Gregs.Plo + -rm -f ppc32/$(DEPDIR)/Gresume.Plo + -rm -f ppc32/$(DEPDIR)/Gstep.Plo + -rm -f ppc32/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f ppc32/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f ppc32/$(DEPDIR)/Lglobal.Plo + -rm -f ppc32/$(DEPDIR)/Linit.Plo + -rm -f ppc32/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f ppc32/$(DEPDIR)/Lregs.Plo + -rm -f ppc32/$(DEPDIR)/Lresume.Plo + -rm -f ppc32/$(DEPDIR)/Lstep.Plo + -rm -f ppc32/$(DEPDIR)/get_func_addr.Plo + -rm -f ppc32/$(DEPDIR)/is_fpreg.Plo + -rm -f ppc32/$(DEPDIR)/regname.Plo + -rm -f ppc64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f ppc64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f ppc64/$(DEPDIR)/Gglobal.Plo + -rm -f ppc64/$(DEPDIR)/Ginit.Plo + -rm -f ppc64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f ppc64/$(DEPDIR)/Gregs.Plo + -rm -f ppc64/$(DEPDIR)/Gresume.Plo + -rm -f ppc64/$(DEPDIR)/Gstep.Plo + -rm -f ppc64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f ppc64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f ppc64/$(DEPDIR)/Lglobal.Plo + -rm -f ppc64/$(DEPDIR)/Linit.Plo + -rm -f ppc64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f ppc64/$(DEPDIR)/Lregs.Plo + -rm -f ppc64/$(DEPDIR)/Lresume.Plo + -rm -f ppc64/$(DEPDIR)/Lstep.Plo + -rm -f ppc64/$(DEPDIR)/get_func_addr.Plo + -rm -f ppc64/$(DEPDIR)/is_fpreg.Plo + -rm -f ppc64/$(DEPDIR)/regname.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_access_fpreg.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_access_mem.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_access_reg.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_accessors.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_create.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_destroy.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_elf.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_find_proc_info.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_get_dyn_info_list_addr.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_get_elf_filename.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_get_proc_name.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_put_unwind_info.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_reg_offset.Plo + -rm -f ptrace/$(DEPDIR)/_UPT_resume.Plo + -rm -f riscv/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f riscv/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f riscv/$(DEPDIR)/Gget_proc_info.Plo + -rm -f riscv/$(DEPDIR)/Gget_save_loc.Plo + -rm -f riscv/$(DEPDIR)/Gglobal.Plo + -rm -f riscv/$(DEPDIR)/Ginit.Plo + -rm -f riscv/$(DEPDIR)/Ginit_local.Plo + -rm -f riscv/$(DEPDIR)/Ginit_remote.Plo + -rm -f riscv/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f riscv/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f riscv/$(DEPDIR)/Gregs.Plo + -rm -f riscv/$(DEPDIR)/Gresume.Plo + -rm -f riscv/$(DEPDIR)/Gstep.Plo + -rm -f riscv/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f riscv/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f riscv/$(DEPDIR)/Lget_proc_info.Plo + -rm -f riscv/$(DEPDIR)/Lget_save_loc.Plo + -rm -f riscv/$(DEPDIR)/Lglobal.Plo + -rm -f riscv/$(DEPDIR)/Linit.Plo + -rm -f riscv/$(DEPDIR)/Linit_local.Plo + -rm -f riscv/$(DEPDIR)/Linit_remote.Plo + -rm -f riscv/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f riscv/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f riscv/$(DEPDIR)/Lregs.Plo + -rm -f riscv/$(DEPDIR)/Lresume.Plo + -rm -f riscv/$(DEPDIR)/Lstep.Plo + -rm -f riscv/$(DEPDIR)/getcontext.Plo + -rm -f riscv/$(DEPDIR)/is_fpreg.Plo + -rm -f riscv/$(DEPDIR)/regname.Plo + -rm -f riscv/$(DEPDIR)/setcontext.Plo + -rm -f riscv/$(DEPDIR)/siglongjmp.Plo + -rm -f s390x/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f s390x/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f s390x/$(DEPDIR)/Gget_proc_info.Plo + -rm -f s390x/$(DEPDIR)/Gget_save_loc.Plo + -rm -f s390x/$(DEPDIR)/Gglobal.Plo + -rm -f s390x/$(DEPDIR)/Ginit.Plo + -rm -f s390x/$(DEPDIR)/Ginit_local.Plo + -rm -f s390x/$(DEPDIR)/Ginit_remote.Plo + -rm -f s390x/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f s390x/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f s390x/$(DEPDIR)/Gregs.Plo + -rm -f s390x/$(DEPDIR)/Gresume.Plo + -rm -f s390x/$(DEPDIR)/Gstep.Plo + -rm -f s390x/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f s390x/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f s390x/$(DEPDIR)/Lget_proc_info.Plo + -rm -f s390x/$(DEPDIR)/Lget_save_loc.Plo + -rm -f s390x/$(DEPDIR)/Lglobal.Plo + -rm -f s390x/$(DEPDIR)/Linit.Plo + -rm -f s390x/$(DEPDIR)/Linit_local.Plo + -rm -f s390x/$(DEPDIR)/Linit_remote.Plo + -rm -f s390x/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f s390x/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f s390x/$(DEPDIR)/Lregs.Plo + -rm -f s390x/$(DEPDIR)/Lresume.Plo + -rm -f s390x/$(DEPDIR)/Lstep.Plo + -rm -f s390x/$(DEPDIR)/getcontext.Plo + -rm -f s390x/$(DEPDIR)/is_fpreg.Plo + -rm -f s390x/$(DEPDIR)/regname.Plo + -rm -f s390x/$(DEPDIR)/setcontext.Plo + -rm -f setjmp/$(DEPDIR)/longjmp.Plo + -rm -f setjmp/$(DEPDIR)/siglongjmp.Plo + -rm -f sh/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f sh/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f sh/$(DEPDIR)/Gget_proc_info.Plo + -rm -f sh/$(DEPDIR)/Gget_save_loc.Plo + -rm -f sh/$(DEPDIR)/Gglobal.Plo + -rm -f sh/$(DEPDIR)/Ginit.Plo + -rm -f sh/$(DEPDIR)/Ginit_local.Plo + -rm -f sh/$(DEPDIR)/Ginit_remote.Plo + -rm -f sh/$(DEPDIR)/Gis_signal_frame.Plo + -rm -f sh/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f sh/$(DEPDIR)/Gregs.Plo + -rm -f sh/$(DEPDIR)/Gresume.Plo + -rm -f sh/$(DEPDIR)/Gstep.Plo + -rm -f sh/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f sh/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f sh/$(DEPDIR)/Lget_proc_info.Plo + -rm -f sh/$(DEPDIR)/Lget_save_loc.Plo + -rm -f sh/$(DEPDIR)/Lglobal.Plo + -rm -f sh/$(DEPDIR)/Linit.Plo + -rm -f sh/$(DEPDIR)/Linit_local.Plo + -rm -f sh/$(DEPDIR)/Linit_remote.Plo + -rm -f sh/$(DEPDIR)/Lis_signal_frame.Plo + -rm -f sh/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f sh/$(DEPDIR)/Lregs.Plo + -rm -f sh/$(DEPDIR)/Lresume.Plo + -rm -f sh/$(DEPDIR)/Lstep.Plo + -rm -f sh/$(DEPDIR)/is_fpreg.Plo + -rm -f sh/$(DEPDIR)/regname.Plo + -rm -f sh/$(DEPDIR)/siglongjmp.Plo + -rm -f unwind/$(DEPDIR)/Backtrace.Plo + -rm -f unwind/$(DEPDIR)/DeleteException.Plo + -rm -f unwind/$(DEPDIR)/FindEnclosingFunction.Plo + -rm -f unwind/$(DEPDIR)/ForcedUnwind.Plo + -rm -f unwind/$(DEPDIR)/GetBSP.Plo + -rm -f unwind/$(DEPDIR)/GetCFA.Plo + -rm -f unwind/$(DEPDIR)/GetDataRelBase.Plo + -rm -f unwind/$(DEPDIR)/GetGR.Plo + -rm -f unwind/$(DEPDIR)/GetIP.Plo + -rm -f unwind/$(DEPDIR)/GetIPInfo.Plo + -rm -f unwind/$(DEPDIR)/GetLanguageSpecificData.Plo + -rm -f unwind/$(DEPDIR)/GetRegionStart.Plo + -rm -f unwind/$(DEPDIR)/GetTextRelBase.Plo + -rm -f unwind/$(DEPDIR)/RaiseException.Plo + -rm -f unwind/$(DEPDIR)/Resume.Plo + -rm -f unwind/$(DEPDIR)/Resume_or_Rethrow.Plo + -rm -f unwind/$(DEPDIR)/SetGR.Plo + -rm -f unwind/$(DEPDIR)/SetIP.Plo + -rm -f x86/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f x86/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f x86/$(DEPDIR)/Gget_proc_info.Plo + -rm -f x86/$(DEPDIR)/Gget_save_loc.Plo + -rm -f x86/$(DEPDIR)/Gglobal.Plo + -rm -f x86/$(DEPDIR)/Ginit.Plo + -rm -f x86/$(DEPDIR)/Ginit_local.Plo + -rm -f x86/$(DEPDIR)/Ginit_remote.Plo + -rm -f x86/$(DEPDIR)/Gos-freebsd.Plo + -rm -f x86/$(DEPDIR)/Gos-linux.Plo + -rm -f x86/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f x86/$(DEPDIR)/Gregs.Plo + -rm -f x86/$(DEPDIR)/Gresume.Plo + -rm -f x86/$(DEPDIR)/Gstep.Plo + -rm -f x86/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f x86/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f x86/$(DEPDIR)/Lget_proc_info.Plo + -rm -f x86/$(DEPDIR)/Lget_save_loc.Plo + -rm -f x86/$(DEPDIR)/Lglobal.Plo + -rm -f x86/$(DEPDIR)/Linit.Plo + -rm -f x86/$(DEPDIR)/Linit_local.Plo + -rm -f x86/$(DEPDIR)/Linit_remote.Plo + -rm -f x86/$(DEPDIR)/Los-freebsd.Plo + -rm -f x86/$(DEPDIR)/Los-linux.Plo + -rm -f x86/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f x86/$(DEPDIR)/Lregs.Plo + -rm -f x86/$(DEPDIR)/Lresume.Plo + -rm -f x86/$(DEPDIR)/Lstep.Plo + -rm -f x86/$(DEPDIR)/getcontext-freebsd.Plo + -rm -f x86/$(DEPDIR)/getcontext-linux.Plo + -rm -f x86/$(DEPDIR)/is_fpreg.Plo + -rm -f x86/$(DEPDIR)/longjmp.Plo + -rm -f x86/$(DEPDIR)/regname.Plo + -rm -f x86/$(DEPDIR)/siglongjmp.Plo + -rm -f x86_64/$(DEPDIR)/Gapply_reg_state.Plo + -rm -f x86_64/$(DEPDIR)/Gcreate_addr_space.Plo + -rm -f x86_64/$(DEPDIR)/Gget_proc_info.Plo + -rm -f x86_64/$(DEPDIR)/Gget_save_loc.Plo + -rm -f x86_64/$(DEPDIR)/Gglobal.Plo + -rm -f x86_64/$(DEPDIR)/Ginit.Plo + -rm -f x86_64/$(DEPDIR)/Ginit_local.Plo + -rm -f x86_64/$(DEPDIR)/Ginit_remote.Plo + -rm -f x86_64/$(DEPDIR)/Gos-freebsd.Plo + -rm -f x86_64/$(DEPDIR)/Gos-linux.Plo + -rm -f x86_64/$(DEPDIR)/Gos-qnx.Plo + -rm -f x86_64/$(DEPDIR)/Gos-solaris.Plo + -rm -f x86_64/$(DEPDIR)/Greg_states_iterate.Plo + -rm -f x86_64/$(DEPDIR)/Gregs.Plo + -rm -f x86_64/$(DEPDIR)/Gresume.Plo + -rm -f x86_64/$(DEPDIR)/Gstash_frame.Plo + -rm -f x86_64/$(DEPDIR)/Gstep.Plo + -rm -f x86_64/$(DEPDIR)/Gtrace.Plo + -rm -f x86_64/$(DEPDIR)/Lapply_reg_state.Plo + -rm -f x86_64/$(DEPDIR)/Lcreate_addr_space.Plo + -rm -f x86_64/$(DEPDIR)/Lget_proc_info.Plo + -rm -f x86_64/$(DEPDIR)/Lget_save_loc.Plo + -rm -f x86_64/$(DEPDIR)/Lglobal.Plo + -rm -f x86_64/$(DEPDIR)/Linit.Plo + -rm -f x86_64/$(DEPDIR)/Linit_local.Plo + -rm -f x86_64/$(DEPDIR)/Linit_remote.Plo + -rm -f x86_64/$(DEPDIR)/Los-freebsd.Plo + -rm -f x86_64/$(DEPDIR)/Los-linux.Plo + -rm -f x86_64/$(DEPDIR)/Los-qnx.Plo + -rm -f x86_64/$(DEPDIR)/Los-solaris.Plo + -rm -f x86_64/$(DEPDIR)/Lreg_states_iterate.Plo + -rm -f x86_64/$(DEPDIR)/Lregs.Plo + -rm -f x86_64/$(DEPDIR)/Lresume.Plo + -rm -f x86_64/$(DEPDIR)/Lstash_frame.Plo + -rm -f x86_64/$(DEPDIR)/Lstep.Plo + -rm -f x86_64/$(DEPDIR)/Ltrace.Plo + -rm -f x86_64/$(DEPDIR)/getcontext.Plo + -rm -f x86_64/$(DEPDIR)/is_fpreg.Plo + -rm -f x86_64/$(DEPDIR)/longjmp.Plo + -rm -f x86_64/$(DEPDIR)/regname.Plo + -rm -f x86_64/$(DEPDIR)/setcontext.Plo + -rm -f x86_64/$(DEPDIR)/siglongjmp.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -4211,14 +6225,14 @@ .MAKE: all check install install-am install-exec-am install-strip -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-exec-hook install-html \ - install-html-am install-info install-info-am \ +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-pkgconfigDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ @@ -4229,6 +6243,14 @@ .PRECIOUS: Makefile +@ARCH_IA64_TRUE@mk_Gcursor_i.s: $(srcdir)/ia64/mk_Gcursor_i.c +@ARCH_IA64_TRUE@ $(COMPILE) -S "$(srcdir)/ia64/mk_Gcursor_i.c" -o mk_Gcursor_i.s +@ARCH_IA64_TRUE@mk_Lcursor_i.s: $(srcdir)/ia64/mk_Lcursor_i.c +@ARCH_IA64_TRUE@ $(COMPILE) -S "$(srcdir)/ia64/mk_Lcursor_i.c" -o mk_Lcursor_i.s +@ARCH_IA64_TRUE@Gcursor_i.h: mk_Gcursor_i.s +@ARCH_IA64_TRUE@ "$(srcdir)/ia64/mk_cursor_i" mk_Gcursor_i.s > Gcursor_i.h +@ARCH_IA64_TRUE@Lcursor_i.h: mk_Lcursor_i.s +@ARCH_IA64_TRUE@ "$(srcdir)/ia64/mk_cursor_i" mk_Lcursor_i.s > Lcursor_i.h @REMOTE_ONLY_TRUE@install-exec-hook: # Nothing to do here.... @@ -4246,14 +6268,6 @@ @REMOTE_ONLY_FALSE@ cd $(DESTDIR)$(libdir) && $(LN_S) -f libunwind-$(arch).so \ @REMOTE_ONLY_FALSE@ libunwind-generic.so; \ @REMOTE_ONLY_FALSE@ fi -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@mk_Gcursor_i.s: $(srcdir)/ia64/mk_Gcursor_i.c -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ $(COMPILE) -S "$(srcdir)/ia64/mk_Gcursor_i.c" -o mk_Gcursor_i.s -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@mk_Lcursor_i.s: $(srcdir)/ia64/mk_Lcursor_i.c -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ $(COMPILE) -S "$(srcdir)/ia64/mk_Lcursor_i.c" -o mk_Lcursor_i.s -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@Gcursor_i.h: mk_Gcursor_i.s -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ "$(srcdir)/ia64/mk_cursor_i" mk_Gcursor_i.s > Gcursor_i.h -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@Lcursor_i.h: mk_Lcursor_i.s -@ARCH_AARCH64_FALSE@@ARCH_ARM_FALSE@@ARCH_IA64_TRUE@ "$(srcdir)/ia64/mk_cursor_i" mk_Lcursor_i.s > Lcursor_i.h # The -version-info flag accepts an argument of the form # `current[:revision[:age]]'. So, passing `-version-info 3:12:1' sets diff -Nru libunwind-1.7.2/src/aarch64/Gglobal.c libunwind-1.8.1/src/aarch64/Gglobal.c --- libunwind-1.7.2/src/aarch64/Gglobal.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Gglobal.c 2024-02-20 19:54:51.000000000 +0000 @@ -48,8 +48,6 @@ dwarf_init (); #ifndef UNW_REMOTE_ONLY - tdep_init_mem_validate (); - aarch64_local_addr_space_init (); #endif atomic_store(&tdep_init_done, 1); /* signal that we're initialized... */ diff -Nru libunwind-1.7.2/src/aarch64/Ginit.c libunwind-1.8.1/src/aarch64/Ginit.c --- libunwind-1.7.2/src/aarch64/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -2,6 +2,7 @@ Copyright (C) 2008 CodeSourcery Copyright (C) 2012 Tommi Rantala Copyright (C) 2013 Linaro Limited + Copyright 2022 Blackberry Limited This file is part of libunwind. @@ -44,7 +45,7 @@ unw_addr_space_t unw_local_addr_space = &local_addr_space; static inline void * -uc_addr (unw_tdep_context_t *uc, int reg) +uc_addr (unw_context_t *uc, int reg) { if (reg == UNW_AARCH64_VG) { @@ -65,10 +66,21 @@ else if (reg == UNW_AARCH64_PC) return &uc->uc_mcontext.mc_gpregs.gp_elr; else if (reg >= UNW_AARCH64_V0 && reg <= UNW_AARCH64_V31) - return &GET_FPCTX(uc)->uc_mcontext.mc_fpregs.fp_q[reg - UNW_AARCH64_V0]; + return &uc->uc_mcontext.mc_fpregs.fp_q[reg - UNW_AARCH64_V0]; else return NULL; -#else /* __FreeBSD__ */ +#elif defined(__QNX__) + if (reg >= UNW_AARCH64_X0 && reg <= UNW_AARCH64_X30) + return &uc->uc_mcontext.cpu.gpr[reg]; + else if (reg == UNW_AARCH64_SP) + return &AARCH64_GET_REGSP(&uc->uc_mcontext.cpu); + else if (reg == UNW_AARCH64_PC) + return &AARCH64_GET_REGIP(&uc->uc_mcontext.cpu); + else if (reg >= UNW_AARCH64_V0 && reg <= UNW_AARCH64_V31) + return &uc->uc_mcontext.fpu.reg[reg - UNW_AARCH64_V0]; + else + return NULL; +# else /* !__FreeBSD && ! __QNX__ */ if (reg >= UNW_AARCH64_X0 && reg <= UNW_AARCH64_X30) return &uc->uc_mcontext.regs[reg]; else if (reg == UNW_AARCH64_SP) @@ -85,7 +97,7 @@ # ifdef UNW_LOCAL_ONLY HIDDEN void * -tdep_uc_addr (unw_tdep_context_t *uc, int reg) +tdep_uc_addr (unw_context_t *uc, int reg) { return uc_addr (uc, reg); } @@ -113,234 +125,6 @@ } -static int mem_validate_pipe[2] = {-1, -1}; - -#ifdef HAVE_PIPE2 -static inline void -do_pipe2 (int pipefd[2]) -{ - pipe2 (pipefd, O_CLOEXEC | O_NONBLOCK); -} -#else -static inline void -set_pipe_flags (int fd) -{ - int fd_flags = fcntl (fd, F_GETFD, 0); - int status_flags = fcntl (fd, F_GETFL, 0); - - fd_flags |= FD_CLOEXEC; - fcntl (fd, F_SETFD, fd_flags); - - status_flags |= O_NONBLOCK; - fcntl (fd, F_SETFL, status_flags); -} - -static inline void -do_pipe2 (int pipefd[2]) -{ - pipe (pipefd); - set_pipe_flags(pipefd[0]); - set_pipe_flags(pipefd[1]); -} -#endif - -static inline void -open_pipe (void) -{ - if (mem_validate_pipe[0] != -1) - close (mem_validate_pipe[0]); - if (mem_validate_pipe[1] != -1) - close (mem_validate_pipe[1]); - - do_pipe2 (mem_validate_pipe); -} - -ALWAYS_INLINE -static int -write_validate (void *addr) -{ - int ret = -1; - ssize_t bytes = 0; - - do - { - char buf; - bytes = read (mem_validate_pipe[0], &buf, 1); - } - while ( errno == EINTR ); - - int valid_read = (bytes > 0 || errno == EAGAIN || errno == EWOULDBLOCK); - if (!valid_read) - { - // re-open closed pipe - open_pipe (); - } - - do - { - ret = write (mem_validate_pipe[1], addr, 1); - } - while ( errno == EINTR ); - - return ret; -} - -static int (*mem_validate_func) (void *addr, size_t len); -static int msync_validate (void *addr, size_t len) -{ - if (msync (addr, len, MS_ASYNC) != 0) - { - return -1; - } - - return write_validate (addr); -} - -#ifdef HAVE_MINCORE -static int mincore_validate (void *addr, size_t len) -{ - unsigned char mvec[2]; /* Unaligned access may cross page boundary */ - - /* mincore could fail with EAGAIN but we conservatively return -1 - instead of looping. */ - if (mincore (addr, len, (unsigned char *)mvec) != 0) - { - return -1; - } - - return write_validate (addr); -} -#endif - -/* Initialise memory validation method. On linux kernels <2.6.21, - mincore() returns incorrect value for MAP_PRIVATE mappings, - such as stacks. If mincore() was available at compile time, - check if we can actually use it. If not, use msync() instead. */ -HIDDEN void -tdep_init_mem_validate (void) -{ - open_pipe (); - -#ifdef HAVE_MINCORE - unsigned char present = 1; - size_t len = unw_page_size; - unw_word_t addr = uwn_page_start((unw_word_t)&present); - unsigned char mvec[1]; - int ret; - while ((ret = mincore((void *)addr, len, (unsigned char *)mvec)) == -1 && - errno == EAGAIN) - { - } - if (ret == 0) - { - Debug(1, "using mincore to validate memory\n"); - mem_validate_func = mincore_validate; - } - else -#endif - { - Debug(1, "using msync to validate memory\n"); - mem_validate_func = msync_validate; - } -} - -/* Cache of already validated addresses */ -#define NLGA 4 -#if defined(HAVE___CACHE_PER_THREAD) && HAVE___CACHE_PER_THREAD -// thread-local variant -static _Thread_local unw_word_t last_good_addr[NLGA]; -static _Thread_local int lga_victim; - -static int -is_cached_valid_mem(unw_word_t addr) -{ - int i; - for (i = 0; i < NLGA; i++) - { - if (addr == last_good_addr[i]) - return 1; - } - return 0; -} - -static void -cache_valid_mem(unw_word_t addr) -{ - int i, victim; - victim = lga_victim; - for (i = 0; i < NLGA; i++) { - if (last_good_addr[victim] == 0) { - last_good_addr[victim] = addr; - return; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - last_good_addr[victim] = addr; - victim = (victim + 1) % NLGA; - lga_victim = victim; -} - -#else -// global, thread safe variant -static _Atomic unw_word_t last_good_addr[NLGA]; -static _Atomic int lga_victim; - -static int -is_cached_valid_mem(unw_word_t addr) -{ - int i; - for (i = 0; i < NLGA; i++) - { - if (addr == atomic_load(&last_good_addr[i])) - return 1; - } - return 0; -} - -static void -cache_valid_mem(unw_word_t addr) -{ - int i, victim; - victim = atomic_load(&lga_victim); - unw_word_t zero = 0; - for (i = 0; i < NLGA; i++) { - if (atomic_compare_exchange_strong(&last_good_addr[victim], &zero, addr)) { - return; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - atomic_store(&last_good_addr[victim], addr); - victim = (victim + 1) % NLGA; - atomic_store(&lga_victim, victim); -} -#endif - -static int -validate_mem (unw_word_t addr) -{ - size_t len; - - len = unw_page_size; - addr = uwn_page_start(addr); - - if (addr == 0) - return -1; - - if (is_cached_valid_mem(addr)) - return 0; - - if (mem_validate_func ((void *) addr, len) == -1) - return -1; - - cache_valid_mem(addr); - - return 0; -} - static int access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, void *arg) @@ -348,18 +132,18 @@ if (unlikely (write)) { Debug (16, "mem[%lx] <- %lx\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { /* validate address */ const struct cursor *c = (const struct cursor *)arg; if (likely (c != NULL) && unlikely (c->validate) - && unlikely (validate_mem (addr))) { + && unlikely (!unw_address_is_valid (addr, sizeof(unw_word_t)))) { Debug (16, "mem[%016lx] -> invalid\n", addr); return -1; } - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (16, "mem[%lx] -> %lx\n", addr, *val); } return 0; @@ -370,7 +154,7 @@ void *arg) { unw_word_t *addr; - unw_tdep_context_t *uc = ((struct cursor *)arg)->uc; + unw_context_t *uc = ((struct cursor *)arg)->uc; if (unw_is_fpreg (reg)) goto badreg; @@ -380,12 +164,12 @@ if (write) { - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); Debug (12, "%s <- %lx\n", unw_regname (reg), *val); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> %lx\n", unw_regname (reg), *val); } return 0; @@ -399,7 +183,7 @@ access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val, int write, void *arg) { - unw_tdep_context_t *uc = ((struct cursor *)arg)->uc; + unw_context_t *uc = ((struct cursor *)arg)->uc; unw_fpreg_t *addr; if (!unw_is_fpreg (reg)) @@ -441,10 +225,21 @@ return 0; } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, char *buf, size_t buf_len, unw_word_t *offp, void *arg) +{ + return _Uelf64_get_elf_filename(as, getpid(), ip, buf, buf_len, offp); +} + HIDDEN void aarch64_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -454,6 +249,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = aarch64_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; local_addr_space.acc.ptrauth_insn_mask = empty_ptrauth_mask; local_addr_space.big_endian = target_is_big_endian(); unw_flush_cache (&local_addr_space, 0, 0); diff -Nru libunwind-1.7.2/src/aarch64/Ginit_local.c libunwind-1.8.1/src/aarch64/Ginit_local.c --- libunwind-1.7.2/src/aarch64/Ginit_local.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Ginit_local.c 2024-02-20 19:54:51.000000000 +0000 @@ -61,7 +61,7 @@ } int -unw_init_local2 (unw_cursor_t *cursor, unw_tdep_context_t *uc, int flag) +unw_init_local2 (unw_cursor_t *cursor, unw_context_t *uc, int flag) { if (!flag) { diff -Nru libunwind-1.7.2/src/aarch64/Gis_signal_frame.c libunwind-1.8.1/src/aarch64/Gis_signal_frame.c --- libunwind-1.7.2/src/aarch64/Gis_signal_frame.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Gis_signal_frame.c 2024-02-20 19:54:51.000000000 +0000 @@ -1,6 +1,7 @@ /* libunwind - a platform-independent unwind library Copyright (C) 2012 Tommi Rantala Copyright (C) 2013 Linaro Limited + Copyright 2022-2023 Blackberry Limited. This file is part of libunwind. @@ -25,16 +26,41 @@ #include "unwind_i.h" -/* The restorer stub will always have the form: - - d2801168 movz x8, #0x8b - d4000001 svc #0x0 -*/ +#if defined(__linux__) +/* + * The restorer stub will always have the form: + * + * d2801168 movz x8, #0x8b + * d4000001 svc #0x0 + */ +# define SIGNAL_RETURN 0xd4000001d2801168 +#elif defined(__FreeBSD__) +/* + * The restorer stub will always have the form: + * + * 910003e0 mov x0, sp + * 91014000 add x0, x0, #SF_UC + * d2803428 mov x8, #SYS_sigreturn + * d4000001 svc 0 + */ +# define SIGNAL_RETURN 0x91014000910003e0 +#elif defined(__QNX__) +/* + * The restorer stub will always have the form: + * + * f9400260 ldr x0, [x19] + * d63f0060 blr x3 + * aa1303e0 mov x0, x19 + * 14xxxxxx b SignalReturn@plt + */ +# define SIGNAL_RETURN 0x14000000aa1303e0 +# define HANDLER_CALL 0xd63f0060f9400260 +#endif int unw_is_signal_frame (unw_cursor_t *cursor) { -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD__) || defined(__QNX__) struct cursor *c = (struct cursor *) cursor; unw_word_t w0, ip; unw_addr_space_t as; @@ -52,9 +78,29 @@ if (ret < 0) return ret; - /* FIXME: distinguish 32bit insn vs 64bit registers. */ - if (w0 != 0xd4000001d2801168) + if ((w0 & SIGNAL_RETURN) != SIGNAL_RETURN) + return 0; +#if defined(__FreeBSD__) + ip += 8; + /* + */ + ret = (*a->access_mem) (as, ip, &w0, 0, arg); + if (ret < 0) + return ret; + if (w0 != 0xd4000001d2803428) return 0; +#elif defined(__QNX__) + unw_word_t w1 = 0; + ret = (*a->access_mem) (as, ip-sizeof(w1), &w1, 0, arg); + if (ret < 0) + return ret; + + if ((w1 & HANDLER_CALL) != HANDLER_CALL) + { + return 0; + } + +#endif return 1; diff -Nru libunwind-1.7.2/src/aarch64/Gos-freebsd.c libunwind-1.8.1/src/aarch64/Gos-freebsd.c --- libunwind-1.7.2/src/aarch64/Gos-freebsd.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Gos-freebsd.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,76 @@ +/* libunwind - a platform-independent unwind library + Copyright (C) 2023 Dmitry Chagin + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include + +#include +#include +#include + +#include + +#include "unwind_i.h" +#include "ucontext_i.h" + +#ifndef UNW_REMOTE_ONLY + +#define setcontext UNW_ARCH_OBJ(setcontext) +extern NORETURN void setcontext(ucontext_t *); + +HIDDEN int +aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) +{ + struct cursor *c = (struct cursor *) cursor; + + /* + * XXX. Due to incorrectly handled cfi_signal_frame directive + * (it should mark current function, not a frame above) + * temporarily use unw_is_signal_frame to detect signal trampoline. + */ + if (unw_is_signal_frame (cursor)) + { + ucontext_t *uc = (ucontext_t *)(c->sigcontext_sp + offsetof(struct sigframe, sf_uc)); + + if (c->dwarf.eh_valid_mask & 0x1) + uc->uc_mcontext.mc_gpregs.gp_x[0] = c->dwarf.eh_args[0]; + if (c->dwarf.eh_valid_mask & 0x2) + uc->uc_mcontext.mc_gpregs.gp_x[1] = c->dwarf.eh_args[1]; + if (c->dwarf.eh_valid_mask & 0x4) + uc->uc_mcontext.mc_gpregs.gp_x[2] = c->dwarf.eh_args[2]; + + Debug (8, "resuming at ip=%llx via sigreturn(%p)\n", + (unsigned long long) c->sigcontext_pc, uc); + sigreturn(uc); + abort(); + } + else + { + setcontext(c->uc); + } + + unreachable(); + return -UNW_EINVAL; +} + +#endif /* !UNW_REMOTE_ONLY */ diff -Nru libunwind-1.7.2/src/aarch64/Gos-linux.c libunwind-1.8.1/src/aarch64/Gos-linux.c --- libunwind-1.7.2/src/aarch64/Gos-linux.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Gos-linux.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,149 @@ +/* libunwind - a platform-independent unwind library + Copyright (C) 2008 CodeSourcery + Copyright (C) 2011-2013 Linaro Limited + Copyright (C) 2012 Tommi Rantala + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "unwind_i.h" + +#ifndef UNW_REMOTE_ONLY + +HIDDEN int +aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) +{ + struct cursor *c = (struct cursor *) cursor; + unw_context_t *uc = c->uc; + + if (c->sigcontext_format == AARCH64_SCF_NONE) + { + /* Since there are no signals involved here we restore EH and non scratch + registers only. */ + __asm__ __volatile__ ( + "ldr x0, %[x0]\n\t" + "ldr x1, %[x1]\n\t" + "ldr x2, %[x2]\n\t" + "ldr x3, %[x3]\n\t" + "ldr x19, %[x19]\n\t" + "ldr x20, %[x20]\n\t" + "ldr x21, %[x21]\n\t" + "ldr x22, %[x22]\n\t" + "ldr x23, %[x23]\n\t" + "ldr x24, %[x24]\n\t" + "ldr x25, %[x25]\n\t" + "ldr x26, %[x26]\n\t" + "ldr x27, %[x27]\n\t" + "ldr x28, %[x28]\n\t" + "ldr x29, %[x29]\n\t" + "ldr x30, %[x30]\n\t" + "ldr d8, %[d8]\n\t" + "ldr d9, %[d9]\n\t" + "ldr d10, %[d10]\n\t" + "ldr d11, %[d11]\n\t" + "ldr d12, %[d12]\n\t" + "ldr d13, %[d13]\n\t" + "ldr d14, %[d14]\n\t" + "ldr d15, %[d15]\n\t" + "ldr x5, %[sp]\n\t" + "mov sp, x5\n\t" + "ret\n" + : + : [x0] "m"(uc->uc_mcontext.regs[0]), + [x1] "m"(uc->uc_mcontext.regs[1]), + [x2] "m"(uc->uc_mcontext.regs[2]), + [x3] "m"(uc->uc_mcontext.regs[3]), + [x19] "m"(uc->uc_mcontext.regs[19]), + [x20] "m"(uc->uc_mcontext.regs[20]), + [x21] "m"(uc->uc_mcontext.regs[21]), + [x22] "m"(uc->uc_mcontext.regs[22]), + [x23] "m"(uc->uc_mcontext.regs[23]), + [x24] "m"(uc->uc_mcontext.regs[24]), + [x25] "m"(uc->uc_mcontext.regs[25]), + [x26] "m"(uc->uc_mcontext.regs[26]), + [x27] "m"(uc->uc_mcontext.regs[27]), + [x28] "m"(uc->uc_mcontext.regs[28]), + [x29] "m"(uc->uc_mcontext.regs[29]), /* FP */ + [x30] "m"(uc->uc_mcontext.regs[30]), /* LR */ + [d8] "m"(GET_FPCTX(uc)->vregs[8]), + [d9] "m"(GET_FPCTX(uc)->vregs[9]), + [d10] "m"(GET_FPCTX(uc)->vregs[10]), + [d11] "m"(GET_FPCTX(uc)->vregs[11]), + [d12] "m"(GET_FPCTX(uc)->vregs[12]), + [d13] "m"(GET_FPCTX(uc)->vregs[13]), + [d14] "m"(GET_FPCTX(uc)->vregs[14]), + [d15] "m"(GET_FPCTX(uc)->vregs[15]), + [sp] "m"(uc->uc_mcontext.sp) + : "x0", "x1", "x2", "x3", "x19", "x20", "x21", "x22", "x23", "x24", + "x25", "x26", "x27", "x28", "x29", "x30" + ); + } + else + { + struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr; + + if (c->dwarf.eh_valid_mask & 0x1) sc->regs[0] = c->dwarf.eh_args[0]; + if (c->dwarf.eh_valid_mask & 0x2) sc->regs[1] = c->dwarf.eh_args[1]; + if (c->dwarf.eh_valid_mask & 0x4) sc->regs[2] = c->dwarf.eh_args[2]; + if (c->dwarf.eh_valid_mask & 0x8) sc->regs[3] = c->dwarf.eh_args[3]; + + sc->regs[4] = uc->uc_mcontext.regs[4]; + sc->regs[5] = uc->uc_mcontext.regs[5]; + sc->regs[6] = uc->uc_mcontext.regs[6]; + sc->regs[7] = uc->uc_mcontext.regs[7]; + sc->regs[8] = uc->uc_mcontext.regs[8]; + sc->regs[9] = uc->uc_mcontext.regs[9]; + sc->regs[10] = uc->uc_mcontext.regs[10]; + sc->regs[11] = uc->uc_mcontext.regs[11]; + sc->regs[12] = uc->uc_mcontext.regs[12]; + sc->regs[13] = uc->uc_mcontext.regs[13]; + sc->regs[14] = uc->uc_mcontext.regs[14]; + sc->regs[15] = uc->uc_mcontext.regs[15]; + sc->regs[16] = uc->uc_mcontext.regs[16]; + sc->regs[17] = uc->uc_mcontext.regs[17]; + sc->regs[18] = uc->uc_mcontext.regs[18]; + sc->regs[19] = uc->uc_mcontext.regs[19]; + sc->regs[20] = uc->uc_mcontext.regs[20]; + sc->regs[21] = uc->uc_mcontext.regs[21]; + sc->regs[22] = uc->uc_mcontext.regs[22]; + sc->regs[23] = uc->uc_mcontext.regs[23]; + sc->regs[24] = uc->uc_mcontext.regs[24]; + sc->regs[25] = uc->uc_mcontext.regs[25]; + sc->regs[26] = uc->uc_mcontext.regs[26]; + sc->regs[27] = uc->uc_mcontext.regs[27]; + sc->regs[28] = uc->uc_mcontext.regs[28]; + sc->regs[29] = uc->uc_mcontext.regs[29]; + sc->regs[30] = uc->uc_mcontext.regs[30]; + sc->sp = uc->uc_mcontext.sp; + sc->pc = uc->uc_mcontext.pc; + sc->pstate = uc->uc_mcontext.pstate; + + __asm__ __volatile__ ( + "mov sp, %0\n" + "ret %1\n" + : : "r" (c->sigcontext_sp), "r" (c->sigcontext_pc) + ); + } + unreachable(); + return -UNW_EINVAL; +} + +#endif /* !UNW_REMOTE_ONLY */ diff -Nru libunwind-1.7.2/src/aarch64/Gos-qnx.c libunwind-1.8.1/src/aarch64/Gos-qnx.c --- libunwind-1.7.2/src/aarch64/Gos-qnx.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Gos-qnx.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,35 @@ +/* libunwind - a platform-independent unwind library + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "unwind_i.h" + +#ifndef UNW_REMOTE_ONLY + +HIDDEN int +aarch64_local_resume (unw_addr_space_t as UNUSED, unw_cursor_t *cursor UNUSED, + void *arg UNUSED) +{ + return -UNW_EINVAL; +} + +#endif /* !UNW_REMOTE_ONLY */ diff -Nru libunwind-1.7.2/src/aarch64/Gresume.c libunwind-1.8.1/src/aarch64/Gresume.c --- libunwind-1.7.2/src/aarch64/Gresume.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Gresume.c 2024-02-20 19:54:51.000000000 +0000 @@ -25,129 +25,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "unwind_i.h" -#include "offsets.h" - -#ifndef UNW_REMOTE_ONLY - -HIDDEN inline int -aarch64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) -{ -#ifdef __linux__ - struct cursor *c = (struct cursor *) cursor; - unw_tdep_context_t *uc = c->uc; - - if (c->sigcontext_format == AARCH64_SCF_NONE) - { - /* Since there are no signals involved here we restore EH and non scratch - registers only. */ - unsigned long regs[24]; - regs[0] = uc->uc_mcontext.regs[0]; - regs[1] = uc->uc_mcontext.regs[1]; - regs[2] = uc->uc_mcontext.regs[2]; - regs[3] = uc->uc_mcontext.regs[3]; - regs[4] = uc->uc_mcontext.regs[19]; - regs[5] = uc->uc_mcontext.regs[20]; - regs[6] = uc->uc_mcontext.regs[21]; - regs[7] = uc->uc_mcontext.regs[22]; - regs[8] = uc->uc_mcontext.regs[23]; - regs[9] = uc->uc_mcontext.regs[24]; - regs[10] = uc->uc_mcontext.regs[25]; - regs[11] = uc->uc_mcontext.regs[26]; - regs[12] = uc->uc_mcontext.regs[27]; - regs[13] = uc->uc_mcontext.regs[28]; - regs[14] = uc->uc_mcontext.regs[29]; /* FP */ - regs[15] = uc->uc_mcontext.regs[30]; /* LR */ - regs[16] = GET_FPCTX(uc)->vregs[8]; - regs[17] = GET_FPCTX(uc)->vregs[9]; - regs[18] = GET_FPCTX(uc)->vregs[10]; - regs[19] = GET_FPCTX(uc)->vregs[11]; - regs[20] = GET_FPCTX(uc)->vregs[12]; - regs[21] = GET_FPCTX(uc)->vregs[13]; - regs[22] = GET_FPCTX(uc)->vregs[14]; - regs[23] = GET_FPCTX(uc)->vregs[15]; - unsigned long sp = uc->uc_mcontext.sp; - - struct regs_overlay { - char x[sizeof(regs)]; - }; - - __asm__ __volatile__ ( - "mov x4, %0\n" - "mov x5, %1\n" - "ldp x0, x1, [x4]\n" - "ldp x2, x3, [x4,16]\n" - "ldp x19, x20, [x4,32]\n" - "ldp x21, x22, [x4,48]\n" - "ldp x23, x24, [x4,64]\n" - "ldp x25, x26, [x4,80]\n" - "ldp x27, x28, [x4,96]\n" - "ldp x29, x30, [x4,112]\n" - "ldp d8, d9, [x4,128]\n" - "ldp d10, d11, [x4,144]\n" - "ldp d12, d13, [x4,160]\n" - "ldp d14, d15, [x4,176]\n" - "mov sp, x5\n" - "ret \n" - : - : "r" (regs), - "r" (sp), - "m" (*(struct regs_overlay *)regs) - ); - } - else - { - struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr; - - if (c->dwarf.eh_valid_mask & 0x1) sc->regs[0] = c->dwarf.eh_args[0]; - if (c->dwarf.eh_valid_mask & 0x2) sc->regs[1] = c->dwarf.eh_args[1]; - if (c->dwarf.eh_valid_mask & 0x4) sc->regs[2] = c->dwarf.eh_args[2]; - if (c->dwarf.eh_valid_mask & 0x8) sc->regs[3] = c->dwarf.eh_args[3]; - - sc->regs[4] = uc->uc_mcontext.regs[4]; - sc->regs[5] = uc->uc_mcontext.regs[5]; - sc->regs[6] = uc->uc_mcontext.regs[6]; - sc->regs[7] = uc->uc_mcontext.regs[7]; - sc->regs[8] = uc->uc_mcontext.regs[8]; - sc->regs[9] = uc->uc_mcontext.regs[9]; - sc->regs[10] = uc->uc_mcontext.regs[10]; - sc->regs[11] = uc->uc_mcontext.regs[11]; - sc->regs[12] = uc->uc_mcontext.regs[12]; - sc->regs[13] = uc->uc_mcontext.regs[13]; - sc->regs[14] = uc->uc_mcontext.regs[14]; - sc->regs[15] = uc->uc_mcontext.regs[15]; - sc->regs[16] = uc->uc_mcontext.regs[16]; - sc->regs[17] = uc->uc_mcontext.regs[17]; - sc->regs[18] = uc->uc_mcontext.regs[18]; - sc->regs[19] = uc->uc_mcontext.regs[19]; - sc->regs[20] = uc->uc_mcontext.regs[20]; - sc->regs[21] = uc->uc_mcontext.regs[21]; - sc->regs[22] = uc->uc_mcontext.regs[22]; - sc->regs[23] = uc->uc_mcontext.regs[23]; - sc->regs[24] = uc->uc_mcontext.regs[24]; - sc->regs[25] = uc->uc_mcontext.regs[25]; - sc->regs[26] = uc->uc_mcontext.regs[26]; - sc->regs[27] = uc->uc_mcontext.regs[27]; - sc->regs[28] = uc->uc_mcontext.regs[28]; - sc->regs[29] = uc->uc_mcontext.regs[29]; - sc->regs[30] = uc->uc_mcontext.regs[30]; - sc->sp = uc->uc_mcontext.sp; - sc->pc = uc->uc_mcontext.pc; - sc->pstate = uc->uc_mcontext.pstate; - - __asm__ __volatile__ ( - "mov sp, %0\n" - "ret %1\n" - : : "r" (c->sigcontext_sp), "r" (c->sigcontext_pc) - ); - } - unreachable(); -#else - printf ("%s: implement me\n", __FUNCTION__); -#endif - return -UNW_EINVAL; -} - -#endif /* !UNW_REMOTE_ONLY */ static inline void establish_machine_state (struct cursor *c) @@ -160,19 +37,17 @@ Debug (8, "copying out cursor state\n"); - for (reg = 0; reg <= UNW_AARCH64_V31; ++reg) + for (reg = 0; reg <= UNW_AARCH64_RA_SIGN_STATE; ++reg) + { + Debug (16, "copying %s %d\n", unw_regname (reg), reg); + if (tdep_access_reg (c, reg, &val, 0) >= 0) + as->acc.access_reg (as, reg, &val, 1, arg); + } + for (reg = UNW_AARCH64_V0; reg <= UNW_AARCH64_V31; ++reg) { Debug (16, "copying %s %d\n", unw_regname (reg), reg); - if (unw_is_fpreg (reg)) - { - if (tdep_access_fpreg (c, reg, &fpval, 0) >= 0) - as->acc.access_fpreg (as, reg, &fpval, 1, arg); - } - else - { - if (tdep_access_reg (c, reg, &val, 0) >= 0) - as->acc.access_reg (as, reg, &val, 1, arg); - } + if (tdep_access_fpreg (c, reg, &fpval, 0) >= 0) + as->acc.access_fpreg (as, reg, &fpval, 1, arg); } } @@ -191,8 +66,10 @@ return -UNW_EINVAL; } +Debug(1, "==smw> before establish_machine_state\n"); establish_machine_state (c); +Debug(1, "==smw> before acc.resume\n"); return (*c->dwarf.as->acc.resume) (c->dwarf.as, (unw_cursor_t *) c, c->dwarf.as_arg); } diff -Nru libunwind-1.7.2/src/aarch64/Gstep.c libunwind-1.8.1/src/aarch64/Gstep.c --- libunwind-1.7.2/src/aarch64/Gstep.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Gstep.c 2024-02-20 19:54:51.000000000 +0000 @@ -2,6 +2,7 @@ Copyright (C) 2008 CodeSourcery Copyright (C) 2011-2013 Linaro Limited Copyright (C) 2012 Tommi Rantala + Copyright 2022 Blackberry Limited. This file is part of libunwind. @@ -25,38 +26,433 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "dwarf_i.h" +#include "ucontext_i.h" #include "unwind_i.h" -#include "offsets.h" + +static const int WSIZE = sizeof (unw_word_t); /* Recognise PLT entries such as: 40ddf0: b0000570 adrp x16, 4ba000 <_GLOBAL_OFFSET_TABLE_+0x2a8> 40ddf4: f9433611 ldr x17, [x16,#1640] 40ddf8: 9119a210 add x16, x16, #0x668 - 40ddfc: d61f0220 br x17 */ + 40ddfc: d61f0220 br x17 + + \note The current implementation only supports little endian modes. +*/ static int is_plt_entry (struct dwarf_cursor *c) { - unw_word_t w0, w1; + unw_word_t w0 = 0, w1 = 0; + unw_accessors_t *a; + + if (c->as->big_endian) + { + return 0; + } + + /* + A PLT (Procedure Linkage Table) is used by the dynamic linker to map the + relative address of a position independent function call onto the real + address of the function. If we attempt to unwind from any instruction + inside the PLT, and the PLT is missing DWARF unwind information, then + conventional unwinding will fail because although the function has been + "called" we have not yet entered the prologue and set-up the stack frame. + + This code looks to see if the instruction is anywhere within a "recognised" + PLT entry (note that the IP could be anywhere within the PLT, so we have to + examine nearby instructions). + */ + + struct instruction_entry + { + uint32_t pattern; + uint32_t mask; + } instructions[4] = + { + // aarch64 + {0x90000010,0x9f00001f}, // adrp + {0xf9400211,0xffc003ff}, // ldr + {0x91000210,0xff8003ff}, // add + {0xd61f0220,0xffffffff}, // br + }; + + a = unw_get_accessors (c->as); + if ((*a->access_mem) (c->as, c->ip, &w0, 0, c->as_arg) < 0) + { + return 0; + } + + /* + NB: the following code is endian sensitive! + + The current implementation is for little-endian modes, big-endian modes + will see the first instruction in the high bits of w0, and the second + instruction in the low bits of w0. Some tweaks will be needed to read from + the correct part of the word to support big endian modes. + */ + if ((w0 & instructions[0].mask) == instructions[0].pattern && + ((w0>>32) & instructions[1].mask) == instructions[1].pattern) + { + if ((*a->access_mem) (c->as, c->ip+8, &w1, 0, c->as_arg) >= 0 && + (w1 & instructions[2].mask) == instructions[2].pattern && + ((w1>>32) & instructions[3].mask) == instructions[3].pattern) + { + return 1; + } + else + { + return 0; + } + } + else if ((w0 & instructions[2].mask) == instructions[2].pattern && + ((w0>>32) & instructions[3].mask) == instructions[3].pattern) + { + w1 = w0; + if ((*a->access_mem) (c->as, c->ip-8, &w0, 0, c->as_arg) >= 0 && + (w0 & instructions[0].mask) == instructions[0].pattern && + ((w0>>32) & instructions[1].mask) == instructions[1].pattern) + { + return 1; + } + else + { + return 0; + } + } + else if ((w0 & instructions[1].mask) == instructions[1].pattern && + ((w0>>32) & instructions[2].mask) == instructions[2].pattern) + { + if ((*a->access_mem) (c->as, c->ip-4, &w0, 0, c->as_arg) < 0 || + (*a->access_mem) (c->as, c->ip+4, &w1, 0, c->as_arg) < 0) + { + return 0; + } + } + else if ((w0 & instructions[3].mask) == instructions[3].pattern) + { + if ((*a->access_mem) (c->as, c->ip-12, &w0, 0, c->as_arg) < 0 || + (*a->access_mem) (c->as, c->ip-4, &w1, 0, c->as_arg) < 0) + { + return 0; + } + } + + if ((w0 & instructions[0].mask) == instructions[0].pattern && + ((w0>>32) & instructions[1].mask) == instructions[1].pattern && + (w1 & instructions[2].mask) == instructions[2].pattern && + ((w1>>32) & instructions[3].mask) == instructions[3].pattern) + { + return 1; + } + else + { + return 0; + } +} + +typedef enum frame_record_location + { + NONE, /* frame record creation has not been detected, use LR */ + AT_SP_OFFSET, /* frame record creation has been detected, but FP + update not detected */ + AT_FP, /* frame record creation and FP update detected */ + } frame_record_location_t; + +typedef struct frame_state + { + frame_record_location_t loc; + int32_t offset; + } frame_state_t; + +/* Recognise when a frame record storing FP+LR has been created and whether FP + has been updated to point to the frame record. For example: + 4183d4: a9bd7bfd stp x29, x30, [sp,#-48]! <= FP+LR stored + 4183d8: d2800005 mov x5, #0x0 + 4183dc: d2800004 mov x4, #0x0 + 4183e0: 910003fd mov x29, sp <= FP updated + 4183e4: a90153f3 stp x19, x20, [sp,#16] + ... + 418444: a94153f3 ldp x19, x20, [sp,#16] + 418448: f94013f5 ldr x21, [sp,#32] + 41844c: a8c37bfd ldp x29, x30, [sp],#48 <= FP+LR retrieved + 418450: d65f03c0 ret +*/ +static frame_state_t +get_frame_state (unw_cursor_t *cursor) +{ + struct cursor *c = (struct cursor *) cursor; + unw_accessors_t *a = unw_get_accessors (c->dwarf.as); + unw_word_t w, start_ip, ip, offp; + frame_state_t fs; + fs.loc = NONE; + fs.offset = 0; + + /* PLT entries do not create frame records */ + if (is_plt_entry (&c->dwarf)) + return fs; + + /* Use get_proc_name to find start_ip of procedure */ + char name[128]; + if (((*a->get_proc_name) (c->dwarf.as, c->dwarf.ip, name, sizeof(name), &offp, c->dwarf.as_arg)) != 0) + return fs; + + start_ip = c->dwarf.ip - offp; + + /* Check for frame record instructions since the start of the procedure (start_ip). + * access_mem reads WSIZE bytes, so two instructions are checked in each iteration + */ + for (ip = start_ip; ip < c->dwarf.ip; ip += WSIZE) + { + if ((*a->access_mem) (c->dwarf.as, ip, &w, 0, c->dwarf.as_arg) < 0) + return fs; + + if (fs.loc == NONE) + { + /* Check that a 64-bit store pair (STP) instruction storing FP and LR + has been executed, which would indicate that a frame record has been + created and that the LR value is saved therein. + + From the ARM Architecture Reference Manual (ARMv8), the format of the + 64-bit STP instruction is + + | 10 | 101 | 0 | 0XX | 0 | imm7 | Rt2 | Rn | Rt | + + where X can be 0/1 above to indicate the instruction variant (post- + index, pre-index or signed offset). imm7 is a 7-bit signed immediate + offset. The following should be asserted for this check + + Rt2 == LR (x30) => 0b11110 + Rn == SP (x31) => 0b11111 + Rt == FP (x29) => 0b11101. + + Hence the bitmask should be constructed to assert that the instruction + is + + | 10 | 101 | 0 | 0XX | 0 | XXXXXXX | 11110 | 11111 | 11101 | + + So using a bitmask of 0xfe407fff, the masked instruction would be + 0xa8007bfd */ + if ((((w & 0xfe407fff00000000) == 0xa8007bfd00000000) && (c->dwarf.ip > ip + 4)) + || (((w & 0x00000000fe407fff) == 0x00000000a8007bfd) && (c->dwarf.ip > ip))) + { + fs.loc = AT_SP_OFFSET; + + /* If the signed offset variant of the STP instruction is detected, + the frame record may not be currently pointed to by SP. Extract + the offset from the STP instruction. + + From the ARM Architecture Reference Manual (ARMv8), the format of + the signed offset variant of the 64-bit STP instruction is + + | 10 | 101 | 0 | 010 | 0 | imm7 | Rt2 | Rn | Rt | + + Hence the bitmask should be constructed to assert that the + instruction is + + | 10 | 101 | 0 | 010 | 0 | XXXXXXX | 11110 | 11111 | 11101 | + + So using a bitmask of 0xffc07fff, the masked instruction would + be 0xa9007bdf. The offset value is (imm7 * 8) */ + if (((w & 0xffc07fff00000000) == 0xa9007bfd00000000) && (c->dwarf.ip > ip + 4)) + { + int32_t abs_offset = (w & 0x001f800000000000) >> 47; + fs.offset = ((w & 0x0020000000000000)? -abs_offset : abs_offset) * 8; + } + else if (((w & 0x00000000ffc07fff) == 0x00000000a9007bfd) && (c->dwarf.ip > ip)) + { + int32_t abs_offset = (w & 0x00000000001f8000) >> 15; + fs.offset = ((w & 0x0000000000200000)? -abs_offset : abs_offset) * 8; + } + else + fs.offset = 0; + + Debug (4, "ip=0x%lx => frame record stored at SP+0x%x\n", ip, fs.offset); + } + } + + if (fs.loc == AT_SP_OFFSET) + { + /* If the STP instruction has been executed, but not the instruction + to update FP, then the SP (with offset) should be used to find the + frame record, otherwise the FP should be used as there are no + guarantees that the SP is pointing to the frame record after the FP + has been updated. + + Two methods for updating the FP have been seen in practice. The + first is a MOV instruction. From the ARM Architecture Reference + Manual (ARMv8), the 64-bit MOV (to/from SP) instruction to update + FP (x29) is 0x910003fd. + + The second is an ADD instruction taking SP and FP as the source and + destination registers, respectively. From the ARM Architecture + Reference Manual (ARMv8), the 64-bit ADD (immediate) instruction is + + | 1 | 0 | 0 | 10001 | shift | imm12 | Rn | Rd | + + where the values of shift and imm12 are irrelevant for this check. + The following should be asserted + + Rn == SP (x31) => 0b11111 + Rd == FP (x29) => 0b11101. + + Hence the bitmask should be constructed to assert that the instruction + is + + | 1 | 0 | 0 | 10001 | XX | XXXXXXXXXXXX | 11111 | 11101 | + + So using a bitmask of 0xff0003ff, the masked instruction would be + 0x910003fd. + + Since the MOV instruction is an alias for ADD, it is sufficient to + only check for the latter case. */ + if ((((w & 0xff0003ff00000000) == 0x910003fd00000000) && (c->dwarf.ip > ip + 4)) + || (((w & 0x00000000ff0003ff) == 0x00000000910003fd) && (c->dwarf.ip > ip))) + { + fs.loc = AT_FP; + fs.offset = 0; + + Debug (4, "ip=0x%lx => frame record stored at FP\n", ip); + } + } + else if (fs.loc == AT_FP) + { + /* Check that a 64-bit load pair (LDP) instruction to restore FP and LR has been + executed, which would indicate that a branch or return instruction is about to + be executed and that FP is pointing to the caller's frame record instead. The + LR should be examined for the return address. In this case, the RA must have + already been authenticated. + + From the ARM Architecture Reference Manual (ARMv8), the format of the 64-bit + LDP instruction is + + | 10 | 101 | 0 | 0XX | 1 | imm7 | Rt2 | Rn | Rt | + + where X can be 0/1 above to indicate the instruction variant (post-index, pre- + index or signed offset). imm7 is a 7-bit signed immediate offset, which is + irrelevant for this check. However, the following should be asserted + + Rt2 == LR (x30) => 0b11110 + Rn == SP (x31) => 0b11111 + Rt == FP (x29) => 0b11101. + + Hence the bitmask should be constructed to assert that the instruction is + + | 10 | 101 | 0 | 0XX | 1 | XXXXXXX | 11110 | 11111 | 11101 | + + So using a bitmask of 0xfe407fff, the masked instruction would be 0xa8407bfd */ + if ((((w & 0xfe407fff00000000) == 0xa8407bfd00000000) && (c->dwarf.ip > ip + 4)) + || (((w & 0x00000000fe407fff) == 0x00000000a8407bfd) && (c->dwarf.ip > ip))) + { + fs.loc = NONE; + fs.offset = 0; + + Debug (4, "ip=0x%lx => frame record has been loaded, use LR\n", ip); + } + } + } + + Debug (3, "[start_ip = 0x%lx, ip=0x%lx) => loc = %d, offset = %d\n", + start_ip, c->dwarf.ip, fs.loc, fs.offset); + + return fs; +} + +#if defined __QNX__ +/* + * QNX kernel call have neither CFI nor save frame pointer, + * 00000000000549e8 : + * 549e8: cb0203e2 neg x2, x2 + * 549ec: 52800168 mov w8, #0xb // #11 + * 549f0: d4000a21 svc #0x51 + * 549f4: d65f03c0 ret + * 549f8: cb0003e0 neg x0, x0 + * 549fc: d65f03c0 ret + * + * From disassemble, QNX kernel call have mov followed by svc, and may with some + * neg instructions at beginning. + * 1. find procedure's ip start,end start + * 2. search mov,svc from begin, skip any neg instructions + */ +static bool is_neg_instr(uint32_t instr) +{ + /* 64bit register Xd */ + return ((instr & 0xffe003e0) == 0xcb0003e0); +} + +/* QNX use w8 to pass kernel call number */ +static bool is_mov_w8_instr(uint32_t instr) +{ + /* movz 32bit register Wd */ + return ((instr & 0xffe00008) == 0x52800008); +} + +static bool is_svc_instr(uint32_t instr) +{ + return instr == 0xd4000a21; +} + +static bool +is_qnx_kercall(struct dwarf_cursor *c) +{ + unw_word_t w0; unw_accessors_t *a; int ret; + unw_word_t proc_start_ip; + unw_word_t proc_end_ip; a = unw_get_accessors_int (c->as); - if ((ret = (*a->access_mem) (c->as, c->ip, &w0, 0, c->as_arg)) < 0 - || (ret = (*a->access_mem) (c->as, c->ip + 8, &w1, 0, c->as_arg)) < 0) - return 0; + if (c->as->big_endian || !a->get_proc_ip_range) + { + return false; + } - ret = (((w0 & 0xff0000009f000000) == 0xf900000090000000) - && ((w1 & 0xffffffffff000000) == 0xd61f022091000000)); + ret = (*a->get_proc_ip_range) (c->as, c->ip, &proc_start_ip, &proc_end_ip, c->as_arg); + if (ret < 0) + { + Debug (2, "ip=0x%lx get proc ip range fail, ret = %d\n", c->ip, ret); + return false; + } + + unw_word_t ip = proc_start_ip; + while ((ip < proc_end_ip) && (ip + 8 < proc_end_ip)) + { + if ((*a->access_mem) (c->as, ip, &w0, 0, c->as_arg) < 0) + { + Debug (14, "access_mem ip=0x%lx fail\n", ip); + return false; + } + + uint32_t low32 = w0 & 0xffffffff; + uint32_t high32 = w0 >> 32; + + if (is_mov_w8_instr(low32) && is_svc_instr(high32)) + { + return true; + } + if (is_neg_instr(low32) && is_neg_instr(high32)) + { + ip += 8; + } + else if (is_neg_instr(low32) && is_mov_w8_instr(high32)) + { + ip += 4; + } + else + { + return false; + } + } - Debug (14, "ip=0x%lx => 0x%016lx 0x%016lx, ret = %d\n", c->ip, w0, w1, ret); - return ret; + return false; } +#endif /* * Save the location of VL (vector length) from the signal frame to the VG (vector * granule) register if it exists, otherwise do nothing. If there is an error, * the location is also not modified. */ +#if defined __linux__ static int get_sve_vl_signal_loc (struct dwarf_cursor* dwarf, unw_word_t sc_addr) { @@ -103,6 +499,13 @@ } return 1; } +#else +static int +get_sve_vl_signal_loc (struct dwarf_cursor* dwarf, unw_word_t sc_addr) +{ + return 1; +} +#endif static int aarch64_handle_signal_frame (unw_cursor_t *cursor) @@ -117,20 +520,19 @@ ret = unw_is_signal_frame (cursor); Debug(1, "unw_is_signal_frame()=%d\n", ret); - - /* Save the SP and PC to be able to return execution at this point - later in time (unw_resume). */ - c->sigcontext_sp = c->dwarf.cfa; - c->sigcontext_pc = c->dwarf.ip; - if (ret > 0) { - c->sigcontext_format = AARCH64_SCF_LINUX_RT_SIGFRAME; - sc_addr = sp_addr + sizeof (siginfo_t) + LINUX_UC_MCONTEXT_OFF; + c->sigcontext_format = SCF_FORMAT; + sc_addr = sp_addr + sizeof (siginfo_t) + UC_MCONTEXT_OFF; } else return -UNW_EUNSPEC; + /* Save the SP and PC to be able to return execution at this point + later in time (unw_resume). */ + c->sigcontext_sp = c->dwarf.cfa; + c->sigcontext_pc = c->dwarf.ip; + c->sigcontext_addr = sc_addr; c->frame_info.frame_type = UNW_AARCH64_FRAME_SIGRETURN; c->frame_info.cfa_reg_offset = sc_addr - sp_addr; @@ -141,40 +543,40 @@ /* Update the dwarf cursor. Set the location of the registers to the corresponding addresses of the uc_mcontext / sigcontext structure contents. */ - c->dwarf.loc[UNW_AARCH64_X0] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X0_OFF); - c->dwarf.loc[UNW_AARCH64_X1] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X1_OFF); - c->dwarf.loc[UNW_AARCH64_X2] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X2_OFF); - c->dwarf.loc[UNW_AARCH64_X3] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X3_OFF); - c->dwarf.loc[UNW_AARCH64_X4] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X4_OFF); - c->dwarf.loc[UNW_AARCH64_X5] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X5_OFF); - c->dwarf.loc[UNW_AARCH64_X6] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X6_OFF); - c->dwarf.loc[UNW_AARCH64_X7] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X7_OFF); - c->dwarf.loc[UNW_AARCH64_X8] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X8_OFF); - c->dwarf.loc[UNW_AARCH64_X9] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X9_OFF); - c->dwarf.loc[UNW_AARCH64_X10] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X10_OFF); - c->dwarf.loc[UNW_AARCH64_X11] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X11_OFF); - c->dwarf.loc[UNW_AARCH64_X12] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X12_OFF); - c->dwarf.loc[UNW_AARCH64_X13] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X13_OFF); - c->dwarf.loc[UNW_AARCH64_X14] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X14_OFF); - c->dwarf.loc[UNW_AARCH64_X15] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X15_OFF); - c->dwarf.loc[UNW_AARCH64_X16] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X16_OFF); - c->dwarf.loc[UNW_AARCH64_X17] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X17_OFF); - c->dwarf.loc[UNW_AARCH64_X18] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X18_OFF); - c->dwarf.loc[UNW_AARCH64_X19] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X19_OFF); - c->dwarf.loc[UNW_AARCH64_X20] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X20_OFF); - c->dwarf.loc[UNW_AARCH64_X21] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X21_OFF); - c->dwarf.loc[UNW_AARCH64_X22] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X22_OFF); - c->dwarf.loc[UNW_AARCH64_X23] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X23_OFF); - c->dwarf.loc[UNW_AARCH64_X24] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X24_OFF); - c->dwarf.loc[UNW_AARCH64_X25] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X25_OFF); - c->dwarf.loc[UNW_AARCH64_X26] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X26_OFF); - c->dwarf.loc[UNW_AARCH64_X27] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X27_OFF); - c->dwarf.loc[UNW_AARCH64_X28] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X28_OFF); - c->dwarf.loc[UNW_AARCH64_X29] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X29_OFF); - c->dwarf.loc[UNW_AARCH64_X30] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_X30_OFF); - c->dwarf.loc[UNW_AARCH64_SP] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_SP_OFF); - c->dwarf.loc[UNW_AARCH64_PC] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_PC_OFF); - c->dwarf.loc[UNW_AARCH64_PSTATE] = DWARF_MEM_LOC (c->dwarf, sc_addr + LINUX_SC_PSTATE_OFF); + c->dwarf.loc[UNW_AARCH64_X0] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF); + c->dwarf.loc[UNW_AARCH64_X1] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 1); + c->dwarf.loc[UNW_AARCH64_X2] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 2); + c->dwarf.loc[UNW_AARCH64_X3] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 3); + c->dwarf.loc[UNW_AARCH64_X4] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 4); + c->dwarf.loc[UNW_AARCH64_X5] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 5); + c->dwarf.loc[UNW_AARCH64_X6] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 6); + c->dwarf.loc[UNW_AARCH64_X7] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 7); + c->dwarf.loc[UNW_AARCH64_X8] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 8); + c->dwarf.loc[UNW_AARCH64_X9] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 9); + c->dwarf.loc[UNW_AARCH64_X10] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 10); + c->dwarf.loc[UNW_AARCH64_X11] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 11); + c->dwarf.loc[UNW_AARCH64_X12] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 12); + c->dwarf.loc[UNW_AARCH64_X13] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 13); + c->dwarf.loc[UNW_AARCH64_X14] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 14); + c->dwarf.loc[UNW_AARCH64_X15] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 15); + c->dwarf.loc[UNW_AARCH64_X16] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 16); + c->dwarf.loc[UNW_AARCH64_X17] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 17); + c->dwarf.loc[UNW_AARCH64_X18] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 18); + c->dwarf.loc[UNW_AARCH64_X19] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 19); + c->dwarf.loc[UNW_AARCH64_X20] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 20); + c->dwarf.loc[UNW_AARCH64_X21] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 21); + c->dwarf.loc[UNW_AARCH64_X22] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 22); + c->dwarf.loc[UNW_AARCH64_X23] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 23); + c->dwarf.loc[UNW_AARCH64_X24] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 24); + c->dwarf.loc[UNW_AARCH64_X25] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 25); + c->dwarf.loc[UNW_AARCH64_X26] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 26); + c->dwarf.loc[UNW_AARCH64_X27] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 27); + c->dwarf.loc[UNW_AARCH64_X28] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_GPR_OFF + 8 * 28); + c->dwarf.loc[UNW_AARCH64_X29] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_X29_OFF); + c->dwarf.loc[UNW_AARCH64_X30] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_X30_OFF); + c->dwarf.loc[UNW_AARCH64_SP] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_SP_OFF); + c->dwarf.loc[UNW_AARCH64_PC] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_PC_OFF); + c->dwarf.loc[UNW_AARCH64_PSTATE] = DWARF_MEM_LOC (c->dwarf, sc_addr + SC_PSTATE_OFF); c->dwarf.loc[UNW_AARCH64_VG] = DWARF_NULL_LOC; /* Set SP/CFA and PC/IP. */ @@ -192,6 +594,7 @@ { struct cursor *c = (struct cursor *) cursor; int validate = c->validate; + unw_word_t fp = 0; int ret; Debug (1, "(cursor=%p, ip=0x%016lx, cfa=0x%016lx))\n", @@ -213,29 +616,129 @@ dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_X30], &c->dwarf.ip); } - /* Restore default memory validation state */ - c->validate = validate; - + /* Try DWARF-based unwinding... */ + c->sigcontext_format = AARCH64_SCF_NONE; ret = dwarf_step (&c->dwarf); Debug(1, "dwarf_step()=%d\n", ret); + /* Restore default memory validation state */ + c->validate = validate; + if (unlikely (ret == -UNW_ESTOPUNWIND)) return ret; + if (likely (ret > 0)) + { + ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_X29], &fp); + if (ret == 0 && fp == 0) + { + /* Procedure Call Standard for the ARM 64-bit Architecture (AArch64) + * specifies that the end of the frame record chain is indicated by + * the address zero in the address for the previous frame. + */ + c->dwarf.ip = 0; + Debug (2, "NULL frame pointer X29 loc, returning 0\n"); + return 0; + } + } + if (unlikely (ret < 0)) { /* DWARF failed. */ + + /* + * We could get here because of missing/bad unwind information. + * Validate all addresses before dereferencing. + */ + if (c->dwarf.as == unw_local_addr_space) + { + c->validate = 1; + } + if (is_plt_entry (&c->dwarf)) { Debug (2, "found plt entry\n"); c->frame_info.frame_type = UNW_AARCH64_FRAME_STANDARD; } +#if defined __QNX__ + else if (is_qnx_kercall(&c->dwarf)) + { + Debug (2, "found qnx kernel call, fallback to use link register\n"); + c->frame_info.frame_type = UNW_AARCH64_FRAME_GUESSED; + } +#endif else { - Debug (2, "fallback\n"); + /* Try use frame record. */ c->frame_info.frame_type = UNW_AARCH64_FRAME_GUESSED; + } + + frame_state_t fs = get_frame_state(cursor); + + /* Prefer using frame record. The LR value is stored at an offset of + 8 into the frame record. */ + if (fs.loc != NONE) + { + if (fs.loc == AT_FP) + { + /* X29 points to frame record. */ + ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_X29], &fp); + if (unlikely (ret == 0)) + { + if (fp == 0) + { + /* Procedure Call Standard for the ARM 64-bit Architecture (AArch64) + * specifies that the end of the frame record chain is indicated by + * the address zero in the address for the previous frame. + */ + c->dwarf.ip = 0; + Debug (2, "NULL frame pointer X29 loc, returning 0\n"); + return 0; + } + } + + for (int i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) + c->dwarf.loc[i] = DWARF_NULL_LOC; + + /* Frame record holds X29 and X30 values. */ + c->dwarf.loc[UNW_AARCH64_X29] = DWARF_MEM_LOC (c->dwarf, fp); + c->dwarf.loc[UNW_AARCH64_X30] = DWARF_MEM_LOC (c->dwarf, fp + 8); + } + else + { + /* Frame record stored but not pointed to by X29, use SP. */ + unw_word_t sp; + ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_SP], &sp); + if (ret < 0) + return ret; + + for (int i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) + c->dwarf.loc[i] = DWARF_NULL_LOC; + + c->frame_info.cfa_reg_offset = fs.offset; + c->frame_info.cfa_reg_sp = 1; + + c->dwarf.loc[UNW_AARCH64_X29] = DWARF_MEM_LOC (c->dwarf, sp + fs.offset); + c->dwarf.loc[UNW_AARCH64_X30] = DWARF_MEM_LOC (c->dwarf, sp + fs.offset + 8); + } + + c->dwarf.loc[UNW_AARCH64_PC] = c->dwarf.loc[UNW_AARCH64_X30]; + + /* Set SP/CFA and PC/IP. */ + ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_X29], &c->dwarf.cfa); + if (ret < 0) + return ret; + ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_AARCH64_PC], &c->dwarf.ip); + if (ret == 0) + { + ret = 1; + } + Debug (2, "fallback, CFA = 0x%016lx, IP = 0x%016lx returning %d\n", + c->dwarf.cfa, c->dwarf.ip, ret); + return ret; } - /* Use link register (X30). */ + + /* No frame record, fallback to link register (X30). */ c->frame_info.cfa_reg_offset = 0; c->frame_info.cfa_reg_sp = 0; c->frame_info.fp_cfa_offset = -1; diff -Nru libunwind-1.7.2/src/aarch64/Gtrace.c libunwind-1.8.1/src/aarch64/Gtrace.c --- libunwind-1.7.2/src/aarch64/Gtrace.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Gtrace.c 2024-02-20 19:54:51.000000000 +0000 @@ -25,7 +25,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "unwind_i.h" -#include "offsets.h" +#include "ucontext_i.h" #include #include @@ -70,7 +70,7 @@ } tls_cache_destroyed = 1; tls_cache = NULL; - munmap (cache->frames, (1u << cache->log_size) * sizeof(unw_tdep_frame_t)); + mi_munmap (cache->frames, (1u << cache->log_size) * sizeof(unw_tdep_frame_t)); mempool_free (&trace_cache_pool, cache); Debug(5, "freed cache %p\n", cache); } @@ -152,7 +152,7 @@ } Debug(5, "expanded cache from 2^%lu to 2^%lu buckets\n", cache->log_size, new_log_size); - munmap(cache->frames, old_size * sizeof(unw_tdep_frame_t)); + mi_munmap(cache->frames, old_size * sizeof(unw_tdep_frame_t)); cache->frames = new_frames; cache->log_size = new_log_size; cache->used = 0; @@ -407,7 +407,7 @@ int depth = 0; int ret; - /* Check input parametres. */ + /* Check input parameters. */ if (unlikely(! cursor || ! buffer || ! size || (maxdepth = *size) <= 0)) return -UNW_EINVAL; @@ -483,13 +483,20 @@ /* Advance standard traceable frame. */ cfa = (f->cfa_reg_sp ? sp : fp) + f->cfa_reg_offset; if (likely(f->lr_cfa_offset != -1)) - ACCESS_MEM_FAST(ret, c->validate, d, cfa + f->lr_cfa_offset, pc); + { + ACCESS_MEM_FAST(ret, c->validate, d, cfa + f->lr_cfa_offset, pc); + } else if (lr != 0) - { - /* Use the saved link register as the new pc. */ - pc = lr; - lr = 0; - } + { + /* Use the saved link register as the new pc. */ + pc = lr; + lr = 0; + } + else + { + /* Cached frame has no LR and neither do we. */ + return -UNW_ESTOPUNWIND; + } if (likely(ret >= 0) && likely(f->fp_cfa_offset != -1)) ACCESS_MEM_FAST(ret, c->validate, d, cfa + f->fp_cfa_offset, fp); @@ -503,15 +510,15 @@ case UNW_AARCH64_FRAME_SIGRETURN: cfa = cfa + f->cfa_reg_offset; /* cfa now points to ucontext_t. */ - ACCESS_MEM_FAST(ret, c->validate, d, cfa + LINUX_SC_PC_OFF, pc); + ACCESS_MEM_FAST(ret, c->validate, d, cfa + SC_PC_OFF, pc); if (likely(ret >= 0)) - ACCESS_MEM_FAST(ret, c->validate, d, cfa + LINUX_SC_X29_OFF, fp); + ACCESS_MEM_FAST(ret, c->validate, d, cfa + SC_X29_OFF, fp); if (likely(ret >= 0)) - ACCESS_MEM_FAST(ret, c->validate, d, cfa + LINUX_SC_SP_OFF, sp); + ACCESS_MEM_FAST(ret, c->validate, d, cfa + SC_SP_OFF, sp); /* Save the link register here in case we end up in a function that doesn't save the link register in the prologue, e.g. kill. */ if (likely(ret >= 0)) - ACCESS_MEM_FAST(ret, c->validate, d, cfa + LINUX_SC_X30_OFF, lr); + ACCESS_MEM_FAST(ret, c->validate, d, cfa + SC_X30_OFF, lr); /* Resume stack at signal restoration point. The stack is not necessarily continuous here, especially with sigaltstack(). */ diff -Nru libunwind-1.7.2/src/aarch64/Los-freebsd.c libunwind-1.8.1/src/aarch64/Los-freebsd.c --- libunwind-1.7.2/src/aarch64/Los-freebsd.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Los-freebsd.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,5 @@ +#define UNW_LOCAL_ONLY +#include +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gos-freebsd.c" +#endif diff -Nru libunwind-1.7.2/src/aarch64/Los-linux.c libunwind-1.8.1/src/aarch64/Los-linux.c --- libunwind-1.7.2/src/aarch64/Los-linux.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Los-linux.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,5 @@ +#define UNW_LOCAL_ONLY +#include +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gos-linux.c" +#endif diff -Nru libunwind-1.7.2/src/aarch64/Los-qnx.c libunwind-1.8.1/src/aarch64/Los-qnx.c --- libunwind-1.7.2/src/aarch64/Los-qnx.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/Los-qnx.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,5 @@ +#define UNW_LOCAL_ONLY +#include +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gos-qnx.c" +#endif diff -Nru libunwind-1.7.2/src/aarch64/getcontext.S libunwind-1.8.1/src/aarch64/getcontext.S --- libunwind-1.7.2/src/aarch64/getcontext.S 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/getcontext.S 2024-02-20 19:54:51.000000000 +0000 @@ -24,7 +24,7 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include "offsets.h" +#include "ucontext_i.h" /* int _Uaarch64_getcontext_trace (unw_tdep_context_t *ucp) @@ -39,10 +39,10 @@ .cfi_startproc /* Save only FP, SP, PC - exclude this call. */ - str x29, [x0, #(LINUX_UC_MCONTEXT_OFF + LINUX_SC_X29_OFF)] + str x29, [x0, #(UC_MCONTEXT_OFF + SC_X29_OFF)] mov x9, sp - str x9, [x0, #(LINUX_UC_MCONTEXT_OFF + LINUX_SC_SP_OFF)] - str x30, [x0, #(LINUX_UC_MCONTEXT_OFF + LINUX_SC_PC_OFF)] + str x9, [x0, #(UC_MCONTEXT_OFF + SC_SP_OFF)] + str x30, [x0, #(UC_MCONTEXT_OFF + SC_PC_OFF)] ret .cfi_endproc diff -Nru libunwind-1.7.2/src/aarch64/longjmp.S libunwind-1.8.1/src/aarch64/longjmp.S --- libunwind-1.7.2/src/aarch64/longjmp.S 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/longjmp.S 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,46 @@ +/* libunwind - a platform-independent unwind library + Copyright (C) 2023 Dmitry Chagin + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + + .global _UI_longjmp_cont + .type _UI_longjmp_cont, @function +_UI_longjmp_cont: +#if defined(__linux__) || defined(__QNX__) + ret +#elif defined(__FreeBSD__) + .cfi_startproc + /* + * x0 - return address + * x1 - return value + */ + mov x30, x0 + mov x0, x1 + ret + .cfi_endproc +#else +#error Port me +#endif + .size _UI_longjmp_cont, . - _UI_longjmp_cont + + /* We do not need executable stack. */ + .section .note.GNU-stack,"",%progbits diff -Nru libunwind-1.7.2/src/aarch64/offsets.h libunwind-1.8.1/src/aarch64/offsets.h --- libunwind-1.7.2/src/aarch64/offsets.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/offsets.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -/* Linux-specific definitions: */ - -/* Define various structure offsets to simplify cross-compilation. */ - -/* Offsets for AArch64 Linux "ucontext_t": */ - -#define LINUX_UC_FLAGS_OFF 0x0 -#define LINUX_UC_LINK_OFF 0x8 -#define LINUX_UC_STACK_OFF 0x10 -#define LINUX_UC_SIGMASK_OFF 0x28 -#define LINUX_UC_MCONTEXT_OFF 0xb0 - -/* Offsets for AArch64 Linux "struct sigcontext": */ - -#define LINUX_SC_FAULTADDRESS_OFF 0x00 -#define LINUX_SC_X0_OFF 0x008 -#define LINUX_SC_X1_OFF 0x010 -#define LINUX_SC_X2_OFF 0x018 -#define LINUX_SC_X3_OFF 0x020 -#define LINUX_SC_X4_OFF 0x028 -#define LINUX_SC_X5_OFF 0x030 -#define LINUX_SC_X6_OFF 0x038 -#define LINUX_SC_X7_OFF 0x040 -#define LINUX_SC_X8_OFF 0x048 -#define LINUX_SC_X9_OFF 0x050 -#define LINUX_SC_X10_OFF 0x058 -#define LINUX_SC_X11_OFF 0x060 -#define LINUX_SC_X12_OFF 0x068 -#define LINUX_SC_X13_OFF 0x070 -#define LINUX_SC_X14_OFF 0x078 -#define LINUX_SC_X15_OFF 0x080 -#define LINUX_SC_X16_OFF 0x088 -#define LINUX_SC_X17_OFF 0x090 -#define LINUX_SC_X18_OFF 0x098 -#define LINUX_SC_X19_OFF 0x0a0 -#define LINUX_SC_X20_OFF 0x0a8 -#define LINUX_SC_X21_OFF 0x0b0 -#define LINUX_SC_X22_OFF 0x0b8 -#define LINUX_SC_X23_OFF 0x0c0 -#define LINUX_SC_X24_OFF 0x0c8 -#define LINUX_SC_X25_OFF 0x0d0 -#define LINUX_SC_X26_OFF 0x0d8 -#define LINUX_SC_X27_OFF 0x0e0 -#define LINUX_SC_X28_OFF 0x0e8 -#define LINUX_SC_X29_OFF 0x0f0 -#define LINUX_SC_X30_OFF 0x0f8 -#define LINUX_SC_SP_OFF 0x100 -#define LINUX_SC_PC_OFF 0x108 -#define LINUX_SC_PSTATE_OFF 0x110 -#define LINUX_SC_RESERVED_OFF 0x120 - -// struct _aarch64_ctx { __u32 magic; __u32 size; }; -// struct sve_context { struct _aarch64_ctx head; __u16 vl; __u16 __reserved[3]; }; -#define LINUX_SC_RESERVED_MAGIC_OFF 0x0 -#define LINUX_SC_RESERVED_SIZE_OFF 0x4 -#define LINUX_SC_RESERVED_SVE_VL_OFF 0x8 \ No newline at end of file diff -Nru libunwind-1.7.2/src/aarch64/setcontext.S libunwind-1.8.1/src/aarch64/setcontext.S --- libunwind-1.7.2/src/aarch64/setcontext.S 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/setcontext.S 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,60 @@ +/* libunwind - a platform-independent unwind library + Copyright (C) 2023 Dmitry Chagin + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "ucontext_i.h" + + + .global _Uaarch64_setcontext + .type _Uaarch64_setcontext, @function +_Uaarch64_setcontext: + .cfi_startproc + + /* + * Since there are no signals involved here we restore EH and + * non scratch registers only. + */ + + mov x9, x0 + ldp x0, x1, [x9, #(UC_MCONTEXT_OFF + SC_GPR_OFF)] + ldp x2, x3, [x9, #(UC_MCONTEXT_OFF + SC_GPR_OFF + 2 * 8)] + ldp x19, x20, [x9, #(UC_MCONTEXT_OFF + SC_GPR_OFF + 19 * 8)] + ldp x21, x22, [x9, #(UC_MCONTEXT_OFF + SC_GPR_OFF + 21 * 8)] + ldp x23, x24, [x9, #(UC_MCONTEXT_OFF + SC_GPR_OFF + 23 * 8)] + ldp x25, x26, [x9, #(UC_MCONTEXT_OFF + SC_GPR_OFF + 25 * 8)] + ldp x27, x28, [x9, #(UC_MCONTEXT_OFF + SC_GPR_OFF + 27 * 8)] + ldp x29, x30, [x9, #(UC_MCONTEXT_OFF + SC_GPR_OFF + 29 * 8)] + + ldp q8, q9, [x9, #(UC_MCONTEXT_OFF + SC_FPSIMD_OFF + 8 * 16)] + ldp q10, q11, [x9, #(UC_MCONTEXT_OFF + SC_FPSIMD_OFF + 10 * 16)] + ldp q12, q13, [x9, #(UC_MCONTEXT_OFF + SC_FPSIMD_OFF + 12 * 16)] + ldp q14, q15, [x9, #(UC_MCONTEXT_OFF + SC_FPSIMD_OFF + 14 * 16)] + + ldr x9, [x9, #(UC_MCONTEXT_OFF + SC_SP_OFF)] + mov sp, x9 + + ret + .cfi_endproc + .size _Uaarch64_setcontext, . - _Uaarch64_setcontext + + .section .note.GNU-stack,"",@progbits diff -Nru libunwind-1.7.2/src/aarch64/siglongjmp.S libunwind-1.8.1/src/aarch64/siglongjmp.S --- libunwind-1.7.2/src/aarch64/siglongjmp.S 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/siglongjmp.S 2024-02-20 19:54:51.000000000 +0000 @@ -1,12 +1,59 @@ - /* Dummy implementation for now. */ +/* libunwind - a platform-independent unwind library + Copyright (C) 2023 Dmitry Chagin - .global _UI_siglongjmp_cont - .global _UI_longjmp_cont +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#if defined(__FreeBSD__) +#include +#define SIG_SETMASK 3 +#endif + + .global _UI_siglongjmp_cont + .type _UI_siglongjmp_cont, @function _UI_siglongjmp_cont: -_UI_longjmp_cont: +#if defined(__linux__) || defined(__QNX__) + ret +#elif defined(__FreeBSD__) + .cfi_startproc + /* + * x0 - return address + * x1 - return value + * x2 - mask + */ + stp x0, x1, [sp, #-16]! + .cfi_def_cfa_offset 16 + /* Restore the signal mask */ + mov x1, x2 /* set */ + mov x2, #0 /* oset */ + mov x0, #SIG_SETMASK + mov x8, #SYS_sigprocmask + svc 0 + ldp x30, x0, [sp], #16 + .cfi_def_cfa_offset 0 ret -#ifdef __linux__ - /* We do not need executable stack. */ - .section .note.GNU-stack,"",%progbits + .cfi_endproc +#else +#error Port me #endif + .size _UI_siglongjmp_cont, . - _UI_siglongjmp_cont + /* We do not need executable stack. */ + .section .note.GNU-stack,"",%progbits diff -Nru libunwind-1.7.2/src/aarch64/ucontext_i.h libunwind-1.8.1/src/aarch64/ucontext_i.h --- libunwind-1.7.2/src/aarch64/ucontext_i.h 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/ucontext_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,74 @@ +/* Contributed by Dmitry Chagin . + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#ifndef libunwind_src_aarch64_ucontext_i_h +#define libunwind_src_aarch64_ucontext_i_h + +#if defined __FreeBSD__ || defined __APPLE__ + +#define UC_MCONTEXT_OFF 0x10 +#define SC_GPR_OFF 0x00 + +#define SC_X29_OFF 0x0e8 +#define SC_X30_OFF 0x0f0 +#define SC_SP_OFF 0x0f8 +#define SC_PC_OFF 0x100 +#define SC_PSTATE_OFF 0x108 +#define SC_FPSIMD_OFF 0x110 + +#define SCF_FORMAT AARCH64_SCF_FREEBSD_RT_SIGFRAME + +#elif defined(__linux__) + +#define UC_MCONTEXT_OFF 0xb0 +#define SC_GPR_OFF 0x08 + +#define SC_X29_OFF 0x0f0 +#define SC_X30_OFF 0x0f8 +#define SC_SP_OFF 0x100 +#define SC_PC_OFF 0x108 +#define SC_PSTATE_OFF 0x110 + +#define SCF_FORMAT AARCH64_SCF_LINUX_RT_SIGFRAME + +#define LINUX_SC_RESERVED_OFF 0x120 + +#define LINUX_SC_RESERVED_MAGIC_OFF 0x0 +#define LINUX_SC_RESERVED_SIZE_OFF 0x4 +#define LINUX_SC_RESERVED_SVE_VL_OFF 0x8 + +#elif defined(__QNX__) + +#define UC_MCONTEXT_OFF 48 +#define SC_GPR_OFF 0 +#define SC_X29_OFF 232 +#define SC_X30_OFF 240 +#define SC_SP_OFF 248 +#define SC_PC_OFF 256 +#define SC_PSTATE_OFF 264 +#define SCF_FORMAT AARCH64_SCF_QNX_RT_SIGFRAME + +#else +# error Port me +#endif + +#endif /* libunwind_src_aarch64_ucontext_i_h */ diff -Nru libunwind-1.7.2/src/aarch64/unwind_i.h libunwind-1.8.1/src/aarch64/unwind_i.h --- libunwind-1.7.2/src/aarch64/unwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/aarch64/unwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -59,9 +59,7 @@ } while (0) #endif -#if defined(__FreeBSD__) -#define GET_FPCTX(uc) ((unw_tdep_context_t *)(&uc->uc_mcontext.mc_spare)) -#else +#if defined(__linux__) #define GET_FPCTX(uc) ((unw_fpsimd_context_t *)(&uc->uc_mcontext.__reserved)) #endif diff -Nru libunwind-1.7.2/src/arm/Gex_tables.c libunwind-1.8.1/src/arm/Gex_tables.c --- libunwind-1.7.2/src/arm/Gex_tables.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/arm/Gex_tables.c 2024-02-20 19:54:51.000000000 +0000 @@ -531,7 +531,7 @@ cb_data.di.format = -1; SIGPROCMASK (SIG_SETMASK, &unwi_full_mask, &saved_mask); - ret = dl_iterate_phdr (arm_phdr_cb, &cb_data); + ret = as->iterate_phdr_function (arm_phdr_cb, &cb_data); SIGPROCMASK (SIG_SETMASK, &saved_mask, NULL); if (cb_data.di.format != -1) diff -Nru libunwind-1.7.2/src/arm/Ginit.c libunwind-1.8.1/src/arm/Ginit.c --- libunwind-1.7.2/src/arm/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/arm/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -73,65 +73,28 @@ return 0; } -/* Cache of already validated addresses */ -#define NLGA 4 -static unw_word_t last_good_addr[NLGA]; -static int lga_victim; - -static int -validate_mem (unw_word_t addr) -{ - int i, victim; - size_t len = unw_page_size; - addr = uwn_page_start(addr); - - if (addr == 0) - return -1; - - for (i = 0; i < NLGA; i++) - { - if (last_good_addr[i] && (addr == last_good_addr[i])) - return 0; - } - - if (msync ((void *) addr, len, MS_ASYNC) == -1) - return -1; - - victim = lga_victim; - for (i = 0; i < NLGA; i++) { - if (!last_good_addr[victim]) { - last_good_addr[victim++] = addr; - return 0; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - last_good_addr[victim] = addr; - victim = (victim + 1) % NLGA; - lga_victim = victim; - - return 0; -} static int access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, void *arg) { - /* validate address */ - const struct cursor *c = (const struct cursor *) arg; - if (c && validate_mem(addr)) - return -1; + const struct cursor *c = (const struct cursor *) arg; if (write) { Debug (16, "mem[%x] <- %x\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { - *val = *(unw_word_t *) addr; - Debug (16, "mem[%x] -> %x\n", addr, *val); + if (likely (c!= NULL) && unlikely (c->validate) + && unlikely (!unw_address_is_valid (addr, sizeof(unw_word_t)))) + { + Debug (16, "mem[%#010lx] -> invalid\n", (long)addr); + return -1; + } + memcpy (val, (void *) addr, sizeof(unw_word_t)); + Debug (16, "mem[%#010lx] -> %#010lx\n", (long)addr, (long)*val); } return 0; } @@ -146,18 +109,17 @@ if (unw_is_fpreg (reg)) goto badreg; -Debug (16, "reg = %s\n", unw_regname (reg)); if (!(addr = uc_addr (uc, reg))) goto badreg; if (write) { - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); Debug (12, "%s <- %x\n", unw_regname (reg), *val); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> %x\n", unw_regname (reg), *val); } return 0; @@ -208,10 +170,23 @@ return _Uelf32_get_proc_name (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return _Uelf32_get_elf_filename (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void arm_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = arm_find_proc_info; local_addr_space.acc.put_unwind_info = arm_put_unwind_info; @@ -221,6 +196,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = arm_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/arm/Gstep.c libunwind-1.8.1/src/arm/Gstep.c --- libunwind-1.7.2/src/arm/Gstep.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/arm/Gstep.c 2024-02-20 19:54:51.000000000 +0000 @@ -94,6 +94,8 @@ struct cursor *c = (struct cursor *) cursor; int ret = -UNW_EUNSPEC; int has_stopunwind = 0; + int validate = c->validate; + c->validate = 1; Debug (1, "(cursor=%p)\n", c); @@ -107,9 +109,15 @@ ret = arm_exidx_step (c); Debug(1, "arm_exidx_step()=%d\n", ret); if (ret > 0) - return 1; + { + c->validate = validate; + return 1; + } if (ret == 0) - return ret; + { + c->validate = validate; + return ret; + } if (ret == -UNW_ESTOPUNWIND) has_stopunwind = 1; } @@ -125,16 +133,21 @@ Debug(1, "dwarf_step()=%d\n", ret); if (likely (ret > 0)) - return 1; + { + c->validate = validate; + return 1; + } if (ret < 0 && ret != -UNW_ENOINFO) { Debug (2, "returning %d\n", ret); + c->validate = validate; return ret; } } #endif /* CONFIG_DEBUG_FRAME */ + c->validate = validate; // Before trying the fallback, if any unwind info tell us to stop, do that. if (has_stopunwind) return -UNW_ESTOPUNWIND; diff -Nru libunwind-1.7.2/src/arm/Gtrace.c libunwind-1.8.1/src/arm/Gtrace.c --- libunwind-1.7.2/src/arm/Gtrace.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/arm/Gtrace.c 2024-02-20 19:54:51.000000000 +0000 @@ -70,7 +70,7 @@ } tls_cache_destroyed = 1; tls_cache = NULL; - munmap (cache->frames, (1u << cache->log_size) * sizeof(unw_tdep_frame_t)); + mi_munmap (cache->frames, (1u << cache->log_size) * sizeof(unw_tdep_frame_t)); mempool_free (&trace_cache_pool, cache); Debug(5, "freed cache %p\n", cache); } @@ -153,7 +153,7 @@ Debug(5, "expanded cache from 2^%u to 2^%u buckets\n", cache->log_size, new_log_size); - munmap(cache->frames, old_size * sizeof(unw_tdep_frame_t)); + mi_munmap(cache->frames, old_size * sizeof(unw_tdep_frame_t)); cache->frames = new_frames; cache->log_size = new_log_size; cache->used = 0; @@ -408,7 +408,7 @@ int depth = 0; int ret; - /* Check input parametres. */ + /* Check input parameters. */ if (unlikely(! cursor || ! buffer || ! size || (maxdepth = *size) <= 0)) return -UNW_EINVAL; @@ -514,7 +514,7 @@ if (likely(ret >= 0)) ACCESS_MEM_FAST(ret, c->validate, d, cfa + LINUX_SC_LR_OFF, lr); #elif defined(__FreeBSD__) - printf("XXX\n"); + #error implement UNW_ARM_FRAME_SIGRETURN on FreeBSD #endif /* Resume stack at signal restoration point. The stack is not @@ -526,7 +526,7 @@ break; case UNW_ARM_FRAME_SYSCALL: - printf("XXX1\n"); + Dprintf ("%s: implement me\n", __FUNCTION__); break; default: diff -Nru libunwind-1.7.2/src/coredump/_UCD_access_mem.c libunwind-1.8.1/src/coredump/_UCD_access_mem.c --- libunwind-1.7.2/src/coredump/_UCD_access_mem.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_access_mem.c 2024-02-21 13:39:50.000000000 +0000 @@ -26,7 +26,7 @@ #include "ucd_file_table.h" int -_UCD_access_mem (unw_addr_space_t as, +_UCD_access_mem (unw_addr_space_t as UNUSED, unw_word_t addr, unw_word_t *val, int write, diff -Nru libunwind-1.7.2/src/coredump/_UCD_access_reg_linux.c libunwind-1.8.1/src/coredump/_UCD_access_reg_linux.c --- libunwind-1.7.2/src/coredump/_UCD_access_reg_linux.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_access_reg_linux.c 2024-02-21 13:39:50.000000000 +0000 @@ -27,9 +27,11 @@ #include "_UCD_internal.h" int -_UCD_access_reg (unw_addr_space_t as, - unw_regnum_t regnum, unw_word_t *valp, - int write, void *arg) +_UCD_access_reg (unw_addr_space_t as UNUSED, + unw_regnum_t regnum, + unw_word_t *valp, + int write, + void *arg) { struct UCD_info *ui = arg; @@ -51,9 +53,6 @@ #elif defined(UNW_TARGET_SH) if (regnum > UNW_SH_PR) goto badreg; -#elif defined(UNW_TARGET_TILEGX) - if (regnum > UNW_TILEGX_CFA) - goto badreg; #elif defined(UNW_TARGET_IA64) || defined(UNW_TARGET_HPPA) || defined(UNW_TARGET_PPC32) || defined(UNW_TARGET_PPC64) if (regnum >= ARRAY_SIZE(ui->prstatus->pr_reg)) goto badreg; diff -Nru libunwind-1.7.2/src/coredump/_UCD_access_reg_qnx.c libunwind-1.8.1/src/coredump/_UCD_access_reg_qnx.c --- libunwind-1.7.2/src/coredump/_UCD_access_reg_qnx.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_access_reg_qnx.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,158 @@ +/** + * Extract filemap info from a coredump (QNX) + */ +/* + This file is part of libunwind. + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#include "_UCD_internal.h" + + +/** + * Access scalar CPU register from core file + * @param[in] as Pointer to unwind address space structure. + * @param[in] regnum Arch-specific index of register to access. + * @param[out] valp Pointer to value to write to to be read to. + * @param[in] write Direction of operation (1 == write, 0 == read register). + * @param[in] arg Arg passed through from back end (pointer to UCD_info). + * + * @returns 0 on success, <0 on error. + * + * Reads a value from an architecture-specific, OS-specific structure retrieved + * from the core file under analysis. + * + * This is the QNX-specific implementation. + */ +int +_UCD_access_reg (unw_addr_space_t as, + unw_regnum_t regnum, + unw_word_t *valp, + int write, + void *arg) +{ + if (write) + { + Debug(0, "write is not supported\n"); + return -UNW_EINVAL; + } + + struct UCD_info *ui = arg; + +#if defined(UNW_TARGET_X86) + switch (regnum) { + case UNW_X86_EAX: + *valp = ui->prstatus->greg.x86.eax; + break; + case UNW_X86_EDX: + *valp = ui->prstatus->greg.x86.edx; + break; + case UNW_X86_ECX: + *valp = ui->prstatus->greg.x86.ecx; + break; + case UNW_X86_EBX: + *valp = ui->prstatus->greg.x86.ebx; + break; + case UNW_X86_ESI: + *valp = ui->prstatus->greg.x86.esi; + break; + case UNW_X86_EDI: + *valp = ui->prstatus->greg.x86.edi; + break; + case UNW_X86_EBP: + *valp = ui->prstatus->greg.x86.ebp; + break; + case UNW_X86_ESP: + *valp = ui->prstatus->greg.x86.esp; + break; + case UNW_X86_EIP: + *valp = ui->prstatus->greg.x86.eip; + break; + case UNW_X86_EFLAGS: + *valp = ui->prstatus->greg.x86.efl; + break; + default: + Debug(0, "bad regnum:%d\n", regnum); + return -UNW_EINVAL; + } +#elif defined(UNW_TARGET_X86_64) + switch (regnum) { + case UNW_X86_64_RAX: + *valp = ui->prstatus->greg.x86_64.rax; + break; + case UNW_X86_64_RDX: + *valp = ui->prstatus->greg.x86_64.rdx; + break; + case UNW_X86_64_RCX: + *valp = ui->prstatus->greg.x86_64.rcx; + break; + case UNW_X86_64_RBX: + *valp = ui->prstatus->greg.x86_64.rbx; + break; + case UNW_X86_64_RSI: + *valp = ui->prstatus->greg.x86_64.rsi; + break; + case UNW_X86_64_RDI: + *valp = ui->prstatus->greg.x86_64.rdi; + break; + case UNW_X86_64_RBP: + *valp = ui->prstatus->greg.x86_64.rbp; + break; + case UNW_X86_64_RSP: + *valp = ui->prstatus->greg.x86_64.rsp; + break; + case UNW_X86_64_RIP: + *valp = ui->prstatus->greg.x86_64.rip; + break; + default: + Debug(0, "bad regnum:%d\n", regnum); + return -UNW_EINVAL; + } +#elif defined(UNW_TARGET_ARM) + if (regnum >= UNW_ARM_R0 && regnum <= UNW_ARM_R16) { + *valp = ui->prstatus->greg.arm.gpr[regnum]; + } else { + Debug(0, "bad regnum:%d\n", regnum); + return -UNW_EINVAL; + } +#elif defined(UNW_TARGET_AARCH64) + if (regnum >= UNW_AARCH64_X0 && regnum <= UNW_AARCH64_X30) { + *valp = ui->prstatus->greg.aarch64.gpr[regnum]; + } else { + switch (regnum) { + case UNW_AARCH64_SP: + *valp = ui->prstatus->greg.aarch64.gpr[AARCH64_REG_SP]; + break; + case UNW_AARCH64_PC: + *valp = ui->prstatus->greg.aarch64.elr; + break; + default: + Debug(0, "bad regnum:%d\n", regnum); + return -UNW_EINVAL; + } + } + +#else +#error Port me +#endif + + return 0; +} + diff -Nru libunwind-1.7.2/src/coredump/_UCD_accessors.c libunwind-1.8.1/src/coredump/_UCD_accessors.c --- libunwind-1.7.2/src/coredump/_UCD_accessors.c 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_accessors.c 2024-02-20 19:54:51.000000000 +0000 @@ -32,5 +32,6 @@ .access_reg = _UCD_access_reg, .access_fpreg = _UCD_access_fpreg, .resume = _UCD_resume, - .get_proc_name = _UCD_get_proc_name + .get_proc_name = _UCD_get_proc_name, + .get_elf_filename = _UCD_get_elf_filename }; diff -Nru libunwind-1.7.2/src/coredump/_UCD_create.c libunwind-1.8.1/src/coredump/_UCD_create.c --- libunwind-1.7.2/src/coredump/_UCD_create.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_create.c 2024-02-21 13:39:50.000000000 +0000 @@ -54,6 +54,8 @@ #define elf_header64 elf_header.h64 bool _64bits; + mi_init (); + struct UCD_info *ui = memset(malloc(sizeof(*ui)), 0, sizeof(*ui)); ui->edi.di_cache.format = -1; ui->edi.di_debug.format = -1; @@ -242,7 +244,7 @@ pid_t _UCD_get_pid(struct UCD_info *ui) { #if defined(HAVE_PROCFS_STATUS) - return ui->prstatus->pid; + return ui->prstatus->thread.pid; #else return ui->prstatus->pr_pid; #endif @@ -251,7 +253,7 @@ int _UCD_get_cursig(struct UCD_info *ui) { #if defined(HAVE_PROCFS_STATUS) - return 0; + return ui->prstatus->thread.info.si_signo; #else return ui->prstatus->pr_cursig; #endif diff -Nru libunwind-1.7.2/src/coredump/_UCD_elf_map_image.c libunwind-1.8.1/src/coredump/_UCD_elf_map_image.c --- libunwind-1.7.2/src/coredump/_UCD_elf_map_image.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_elf_map_image.c 2024-02-21 13:39:50.000000000 +0000 @@ -43,10 +43,10 @@ * these pages are allocated, but non-accessible. */ /* addr, length, prot, flags, fd, fd_offset */ - ei->image = mmap(NULL, phdr->p_memsz, PROT_READ, MAP_PRIVATE, ui->coredump_fd, phdr->p_offset); + ei->image = mi_mmap(NULL, phdr->p_memsz, PROT_READ, MAP_PRIVATE, ui->coredump_fd, phdr->p_offset); if (ei->image == MAP_FAILED) { - Debug(0, "error %d in mmap(): %s\n", errno, strerror(errno)); + Debug(0, "error in mmap()\n"); ei->image = NULL; return NULL; } @@ -55,7 +55,7 @@ if (remainder_len > 0) { void *remainder_base = (char*) ei->image + phdr->p_filesz; - munmap(remainder_base, remainder_len); + mi_munmap(remainder_base, remainder_len); } } else { ucd_file_t *ucd_file = ucd_file_table_at(&ui->ucd_file_table, phdr->p_backing_file_index); @@ -76,7 +76,7 @@ /* Check ELF header for sanity */ if (!elf_w(valid_object)(ei)) { - munmap(ei->image, ei->size); + mi_munmap(ei->image, ei->size); ei->image = NULL; ei->size = 0; return NULL; diff -Nru libunwind-1.7.2/src/coredump/_UCD_get_elf_filename.c libunwind-1.8.1/src/coredump/_UCD_get_elf_filename.c --- libunwind-1.7.2/src/coredump/_UCD_get_elf_filename.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_get_elf_filename.c 2024-02-21 13:39:50.000000000 +0000 @@ -0,0 +1,122 @@ +/* + This file is part of libunwind. + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#include "_UCD_lib.h" +#include "_UCD_internal.h" + +#if defined(HAVE_ELF_H) +# include +#elif defined(HAVE_SYS_ELF_H) +# include +#endif + +static off_t +_get_text_offset (uint8_t *image) +{ + off_t offset = 0; + typedef union + { + Elf32_Ehdr h32; + Elf64_Ehdr h64; + } elf_header_t; + + elf_header_t *elf_header = (elf_header_t *)image; + bool _64bits = (elf_header->h32.e_ident[EI_CLASS] == ELFCLASS64); + off_t e_phofs = _64bits ? elf_header->h64.e_phoff : elf_header->h32.e_phoff; + unsigned e_phnum = _64bits ? elf_header->h64.e_phnum : elf_header->h32.e_phnum; + + for (unsigned i = 0; i < e_phnum; ++i) + { + if (_64bits) + { + Elf64_Phdr *phdr = (Elf64_Phdr *) (image + e_phofs); + + if (phdr[i].p_type == PT_LOAD && (phdr[i].p_flags & PF_X) == PF_X) + { + offset = phdr[i].p_offset; + break; + } + } + else + { + Elf32_Phdr *phdr = (Elf32_Phdr *) (image + e_phofs); + + if ((phdr[i].p_flags & PF_X) == PF_X) + { + offset = phdr[i].p_offset; + break; + } + } + } + + Debug (4, "returning offset %ld\n", (long)offset); + return offset; +} + +static int +elf_w (CD_get_elf_filename) (struct UCD_info *ui, unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp) +{ + int ret = UNW_ESUCCESS; + + /* Used to be tdep_get_elf_image() in ptrace unwinding code */ + coredump_phdr_t *cphdr = _UCD_get_elf_image (ui, ip); + if (!cphdr) + { + Debug (1, "returns error: _UCD_get_elf_image failed\n"); + return -UNW_ENOINFO; + } + + const ucd_file_t *ucd_file = ucd_file_table_at(&ui->ucd_file_table, cphdr->p_backing_file_index); + if (!ucd_file) + { + Debug (1, "backing_fie_index:%d ucd_file_table_at failed\n", cphdr->p_backing_file_index); + return -UNW_ENOINFO; + } + + if (buf) + { + strncpy(buf, ucd_file->filename, buf_len); + buf[buf_len - 1] = '\0'; + if (strlen(ucd_file->filename) >= buf_len) + ret = -UNW_ENOMEM; + } + + /* Adjust IP to be relative to start of the .text section of the ELF file */ + if (offp) + *offp = ip - cphdr->p_vaddr + _get_text_offset (ui->edi.ei.image); + + return ret; +} + +int +_UCD_get_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, void *arg) +{ + struct UCD_info *ui = arg; +#if UNW_ELF_CLASS == UNW_ELFCLASS64 + return _Uelf64_CD_get_elf_filename (ui, as, ip, buf, buf_len, offp); +#elif UNW_ELF_CLASS == UNW_ELFCLASS32 + return _Uelf32_CD_get_elf_filename (ui, as, ip, buf, buf_len, offp); +#else + return -UNW_ENOINFO; +#endif +} diff -Nru libunwind-1.7.2/src/coredump/_UCD_get_mapinfo_linux.c libunwind-1.8.1/src/coredump/_UCD_get_mapinfo_linux.c --- libunwind-1.7.2/src/coredump/_UCD_get_mapinfo_linux.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_get_mapinfo_linux.c 2024-02-20 19:54:51.000000000 +0000 @@ -74,7 +74,7 @@ * various segments loaded into memory from ELF files with the ELF file from * which those segments were loaded. * - * This function links the file namess mapped in the CORE/NT_FILE note with + * This function links the file names mapped in the CORE/NT_FILE note with * the program headers in the core file through the UCD_info file table. * * Any file names that end in the string "(deleted)" are ignored. @@ -130,12 +130,12 @@ * Note interpretation requires both name and type. */ static int -_handle_pt_note_segment (uint32_t n_namesz, - uint32_t n_descsz, - uint32_t n_type, - char *name, - uint8_t *desc, - void *arg) +_handle_pt_note_segment (uint32_t n_namesz UNUSED, + uint32_t n_descsz UNUSED, + uint32_t n_type, + char *name, + uint8_t *desc, + void *arg) { #ifdef NT_FILE if (n_type == NT_FILE && strcmp (name, "CORE") == 0) diff -Nru libunwind-1.7.2/src/coredump/_UCD_get_mapinfo_qnx.c libunwind-1.8.1/src/coredump/_UCD_get_mapinfo_qnx.c --- libunwind-1.7.2/src/coredump/_UCD_get_mapinfo_qnx.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_get_mapinfo_qnx.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,159 @@ +/** + * Extract filemap info from a coredump (QNX) + */ +/* + This file is part of libunwind. + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#include "_UCD_internal.h" + +#include + + +#define MAP_PATH_MAX 512 + + +/** Number of bytes for rounding up addresses. */ +static inline const size_t _roundup(size_t size) +{ +#if UNW_ELF_CLASS == UNW_ELFCLASS32 + static const size_t _roundup_sz = 4; +#else + static const size_t _roundup_sz = 8; +#endif + return (((size) + ((_roundup_sz)-1)) & ~((_roundup_sz)-1)); +} + + +/** + * Handle the QNX/QNT_LINK_MAP note type. + * @param[in] desc The note-specific data + * @param[in] arg The user-supplied callback argument + * + * The QNX/QNT_LINK_MAP note type contains a list of start/end virtual addresses + * within the core file and an associated filename. The purpose is to map + * various segments loaded into memory from ELF files with the ELF file from + * which those segments were loaded. + * + * This function links the file names mapped in the QNX/QNT_LINK_MAP note with + * the program headers in the core file through the UCD_info file table. + */ +static int +_handle_nt_file_note (uint8_t *desc, void *arg) +{ + struct UCD_info *ui = (struct UCD_info *)arg; + struct qnx_linkmap_note* linkmap_note = (struct qnx_linkmap_note*)desc; + uintptr_t data = (uintptr_t)&linkmap_note->data[0]; + + const size_t r_debug_size = _roundup(sizeof(struct qnx_r_debug)); + const struct qnx_link_map* linkmap = (struct qnx_link_map*)(data + r_debug_size); + const size_t link_count = (linkmap_note->header.linkmapsz - r_debug_size) / sizeof(struct qnx_link_map); + const char *const strtab = (const char *const)(data + _roundup(linkmap_note->header.linkmapsz)); + + for (size_t i = 0; i < link_count; ++i) + { + const struct qnx_link_map *map = &linkmap[i]; + for (size_t p = 0; p < ui->phdrs_count; ++p) + { + coredump_phdr_t *phdr = &ui->phdrs[p]; + if (phdr->p_type == PT_LOAD + && linkmap[i].l_addr >= phdr->p_vaddr + && linkmap[i].l_addr < phdr->p_vaddr + phdr->p_memsz) + { + char libpath[MAP_PATH_MAX]; + if ((0 == strncmp(strtab + linkmap[i].l_name, "PIE", 3)) + || (0 == strncmp(strtab + linkmap[i].l_name, "EXE", 3))) + { + snprintf (libpath, MAP_PATH_MAX, "%s", strtab + map->l_path); + } + else + { + snprintf (libpath, MAP_PATH_MAX, "%s%s", strtab + map->l_path, strtab + map->l_name); + } + phdr->p_backing_file_index = ucd_file_table_insert (&ui->ucd_file_table, libpath); + Debug(2, "added '%s' at index %d for phdr %zu\n", libpath, phdr->p_backing_file_index, p); + break; + } + } + } + + return UNW_ESUCCESS; +} + + +/** + * Callback to handle notes. + * @param[in] n_namesz size of name data + * @param[in] n_descsz size of desc data + * @param[in] n_type type of note + * @param[in] name zero-terminated string, n_namesz bytes plus alignment padding + * @param[in] desc note-specific data, n_descsz bytes plus alignment padding + * @param[in] arg user-supplied callback argument + */ +static int +_handle_pt_note_segment (uint32_t n_namesz UNUSED, + uint32_t n_descsz UNUSED, + uint32_t n_type, + char *name, + uint8_t *desc, + void *arg) +{ + if ((strcmp(name, QNX_NOTE_NAME) == 0) && n_type == QNT_LINK_MAP) + { + return _handle_nt_file_note (desc, arg); + } + return UNW_ESUCCESS; +} + + +/** + * Get filemap info from core file (QNX) + * @param[in] ui + * @param[in] phdrs + * @param[in] phdr_size + * + * If there is a mapinfo note in the core file, map its contents to the phdrs. + * + * Since there may or may not be any mapinfo notes it's OK for this function to + * fail. + */ +int +_UCD_get_mapinfo (struct UCD_info *ui, coredump_phdr_t *phdrs, unsigned phdr_size) +{ + int ret = UNW_ESUCCESS; /* it's OK if there are no file mappings */ + + for (unsigned i = 0; i < phdr_size; ++i) + { + if (phdrs[i].p_type == PT_NOTE) + { + uint8_t *segment; + size_t segment_size; + ret = _UCD_elf_read_segment (ui, &phdrs[i], &segment, &segment_size); + + if (ret == UNW_ESUCCESS) + { + _UCD_elf_visit_notes (segment, segment_size, _handle_pt_note_segment, ui); + free (segment); + } + } + } + + return ret; +} diff -Nru libunwind-1.7.2/src/coredump/_UCD_get_proc_name.c libunwind-1.8.1/src/coredump/_UCD_get_proc_name.c --- libunwind-1.7.2/src/coredump/_UCD_get_proc_name.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_get_proc_name.c 2024-02-21 13:39:50.000000000 +0000 @@ -84,8 +84,9 @@ elf_w (CD_get_proc_name) (struct UCD_info *ui, unw_addr_space_t as, unw_word_t ip, char *buf, size_t buf_len, unw_word_t *offp) { - unsigned long segbase, mapoff; + unsigned long segbase; int ret; + /* We're about to map an elf image. The call will unmap memory it doesn't own, so just null it out and avoid that. */ @@ -104,6 +105,26 @@ /* Adjust IP to be relative to start of the .text section of the ELF file */ ip = ip - cphdr->p_vaddr + _get_text_offset (ui->edi.ei.image); ret = elf_w (get_proc_name_in_image) (as, &ui->edi.ei, segbase, ip, buf, buf_len, offp); + if (ret == -UNW_ENOINFO) + { + /* maybe symtab is stripped, try debuglink */ + ucd_file_t *ucd_file = ucd_file_table_at(&ui->ucd_file_table, cphdr->p_backing_file_index); + if (ucd_file) + { + struct elf_image ei = {NULL, 0}; + ret = elf_w (load_debuginfo) (ucd_file->filename, &ei, 1); + if (ret == 0) + { + ret = elf_w (get_proc_name_in_image) (as, &ei, segbase, ip, buf, buf_len, offp); + mi_munmap(ei.image, ei.size); + ei.image = NULL; + } + else + { + ret = -UNW_ENOINFO; + } + } + } return ret; } diff -Nru libunwind-1.7.2/src/coredump/_UCD_get_threadinfo_prstatus.c libunwind-1.8.1/src/coredump/_UCD_get_threadinfo_prstatus.c --- libunwind-1.7.2/src/coredump/_UCD_get_threadinfo_prstatus.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_get_threadinfo_prstatus.c 2024-02-20 19:54:51.000000000 +0000 @@ -1,19 +1,19 @@ /** - * Extract threadinfo from a coredump (targets with NT_PRSTATUS) + * Extract threadinfo from a coredump (supported targets) */ /* This file is part of libunwind. - + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -35,13 +35,22 @@ * Accumulate a count of the number of thread notes * * This _UCD_elf_visit_notes() callback just increments a count for each - * NT_PRSTATUS note seen. + * thread status note seen. */ static int -_count_thread_notes(uint32_t n_namesz, uint32_t n_descsz, uint32_t n_type, char *name, uint8_t *desc, void *arg) +_count_thread_notes(uint32_t n_namesz UNUSED, + uint32_t n_descsz UNUSED, + uint32_t n_type, + char *name UNUSED, + uint8_t *desc UNUSED, + void *arg) { size_t *thread_count = (size_t *)arg; +#if defined(HAVE_PROCFS_STATUS) + if (0 == strcmp(name, QNX_NOTE_NAME) && n_type == QNT_CORE_STATUS) +#else if (n_type == NT_PRSTATUS) +#endif /* defined(HAVE_PROCFS_STATUS) */ { ++*thread_count; } @@ -52,25 +61,55 @@ /** * Save a thread note to the unwind-coredump context * - * This _UCD_elf_visit_notes() callback just copies the actual data structure - * from any NT_PRSTATUS note seen into an array of such structures and - * increments the count. + * This _UCD_elf_visit_notes() callback just copies the actual data structure(s) + * from any notes seen into an array of such structures and increments the count. + * + * Some targets have multiple notes for each thread that MUST always come in the + * right order (eg. NT_PRSTATUS followed by NT_FPREGSET for Linux and the BSDs). + * The count only gets incremented on the first note for the thread so the + * remaining notes need to have their zero-based index adjusted. */ static int -_save_thread_notes(uint32_t n_namesz, uint32_t n_descsz, uint32_t n_type, char *name, uint8_t *desc, void *arg) +_save_thread_notes(uint32_t n_namesz UNUSED, + uint32_t n_descsz UNUSED, + uint32_t n_type, + char *name UNUSED, + uint8_t *desc, + void *arg) { struct UCD_info *ui = (struct UCD_info *)arg; +#if defined(HAVE_PROCFS_STATUS) + if (0 == strcmp(name, QNX_NOTE_NAME)) + { + switch (n_type) + { + case QNT_CORE_STATUS: + ++ui->n_threads; + memcpy(&ui->threads[ui->n_threads-1].prstatus.thread, desc, (size_t)n_descsz); + break; + case QNT_CORE_GREG: + memcpy(&ui->threads[ui->n_threads-1].prstatus.greg, desc, (size_t)n_descsz); + break; + case QNT_CORE_FPREG: + memcpy(&ui->threads[ui->n_threads-1].prstatus.fpreg, desc, (size_t)n_descsz); + break; + default: + break; + } + } +#else if (n_type == NT_PRSTATUS) - { - memcpy(&ui->threads[ui->n_threads].prstatus, desc, sizeof(UCD_proc_status_t)); - ++ui->n_threads; - } - if (n_type == NT_FPREGSET) - { + { + memcpy(&ui->threads[ui->n_threads].prstatus, desc, sizeof(UCD_proc_status_t)); + ++ui->n_threads; + } +#endif #ifdef HAVE_ELF_FPREGSET_T - memcpy(&ui->threads[ui->n_threads-1].fpregset, desc, sizeof(elf_fpregset_t)); + if (n_type == NT_FPREGSET) + { + memcpy(&ui->threads[ui->n_threads-1].fpregset, desc, sizeof(elf_fpregset_t)); + } #endif - } return UNW_ESUCCESS; } @@ -82,7 +121,7 @@ * and the process information is described by a note in the core file of type * NT_PRSTATUS. In fact, on Linux, the state of a thread is described by a * CPU-dependent group of notes but right now we're only going to care about the - * one process-status note. This statement is also true for FreeBSD. + * one process-status note. This statement is also true for the BSDs. * * Depending on how the core file is created, there may be one PT_NOTE segment * with multiple NT_PRSTATUS notes in it, or multiple PT_NOTE segments. Just to diff -Nru libunwind-1.7.2/src/coredump/_UCD_internal.h libunwind-1.8.1/src/coredump/_UCD_internal.h --- libunwind-1.7.2/src/coredump/_UCD_internal.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UCD_internal.h 2024-02-20 19:54:51.000000000 +0000 @@ -80,7 +80,11 @@ #elif defined(HAVE_STRUCT_PRSTATUS) typedef struct prstatus UCD_proc_status_t; #elif defined(HAVE_PROCFS_STATUS) -typedef procfs_status UCD_proc_status_t; +typedef struct { + procfs_status thread; + procfs_greg greg; + procfs_fpreg fpreg; +} UCD_proc_status_t; #else # error UCD_proc_status_t undefined #endif diff -Nru libunwind-1.7.2/src/coredump/_UPT_access_fpreg.c libunwind-1.8.1/src/coredump/_UPT_access_fpreg.c --- libunwind-1.7.2/src/coredump/_UPT_access_fpreg.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UPT_access_fpreg.c 2024-02-21 13:39:50.000000000 +0000 @@ -25,8 +25,11 @@ #include "_UCD_internal.h" int -_UCD_access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val, - int write, void *arg) +_UCD_access_fpreg (unw_addr_space_t as UNUSED, + unw_regnum_t reg UNUSED, + unw_fpreg_t *val UNUSED, + int write, + void *arg) { struct UCD_info *ui UNUSED = arg; diff -Nru libunwind-1.7.2/src/coredump/_UPT_get_dyn_info_list_addr.c libunwind-1.8.1/src/coredump/_UPT_get_dyn_info_list_addr.c --- libunwind-1.7.2/src/coredump/_UPT_get_dyn_info_list_addr.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UPT_get_dyn_info_list_addr.c 2024-02-21 13:39:50.000000000 +0000 @@ -79,8 +79,10 @@ DWARF2 unwind info. */ static inline int -get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, - int *countp) +get_list_addr (unw_addr_space_t as UNUSED, + unw_word_t *dil_addr UNUSED, + void *arg UNUSED, + int *countp) { # warning Implement get_list_addr(), please. *countp = 0; diff -Nru libunwind-1.7.2/src/coredump/_UPT_put_unwind_info.c libunwind-1.8.1/src/coredump/_UPT_put_unwind_info.c --- libunwind-1.7.2/src/coredump/_UPT_put_unwind_info.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UPT_put_unwind_info.c 2024-02-21 13:39:50.000000000 +0000 @@ -27,7 +27,9 @@ #include "_UCD_internal.h" void -_UCD_put_unwind_info (unw_addr_space_t as, unw_proc_info_t *pi, void *arg) +_UCD_put_unwind_info (unw_addr_space_t as UNUSED, + unw_proc_info_t *pi, + void *arg UNUSED) { if (!pi->unwind_info) return; diff -Nru libunwind-1.7.2/src/coredump/_UPT_resume.c libunwind-1.8.1/src/coredump/_UPT_resume.c --- libunwind-1.7.2/src/coredump/_UPT_resume.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/_UPT_resume.c 2024-02-21 13:39:50.000000000 +0000 @@ -27,7 +27,9 @@ #include "_UCD_internal.h" int -_UCD_resume (unw_addr_space_t as, unw_cursor_t *c, void *arg) +_UCD_resume (unw_addr_space_t as UNUSED, + unw_cursor_t *c UNUSED, + void *arg UNUSED) { print_error (__func__); print_error (" not implemented\n"); diff -Nru libunwind-1.7.2/src/coredump/ucd_file_table.c libunwind-1.8.1/src/coredump/ucd_file_table.c --- libunwind-1.7.2/src/coredump/ucd_file_table.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/coredump/ucd_file_table.c 2024-02-20 19:54:51.000000000 +0000 @@ -93,6 +93,7 @@ if (ucd_file->fd == -1) { Debug(0, "error %d in open(%s): %s\n", errno, ucd_file->filename, strerror(errno)); + return; } struct stat sbuf; @@ -115,7 +116,6 @@ { if (ucd_file->image != NULL) { - Debug(0, "warning, file \"%s\" already loaded\n", ucd_file->filename); return ucd_file->image; } @@ -124,10 +124,10 @@ _ucd_file_open (ucd_file); } - ucd_file->image = mmap(NULL, ucd_file->size, PROT_READ, MAP_PRIVATE, ucd_file->fd, 0); + ucd_file->image = mi_mmap(NULL, ucd_file->size, PROT_READ, MAP_PRIVATE, ucd_file->fd, 0); if (ucd_file->image == MAP_FAILED) { - Debug(0, "error %d in mmap(%s): %s\n", errno, ucd_file->filename, strerror(errno)); + Debug(0, "error in mmap(%s)\n", ucd_file->filename); ucd_file->image = NULL; return NULL; } diff -Nru libunwind-1.7.2/src/dl-iterate-phdr.c libunwind-1.8.1/src/dl-iterate-phdr.c --- libunwind-1.7.2/src/dl-iterate-phdr.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/dl-iterate-phdr.c 2024-02-20 19:54:51.000000000 +0000 @@ -39,17 +39,12 @@ (ehdr).e_ident[EI_MAG3] == ELFMAG3) #endif -typedef int (*unw_iterate_phdr_impl) (int (*callback) ( - struct dl_phdr_info *info, - size_t size, void *data), - void *data); - HIDDEN int -dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, size_t size, void *data), +dl_iterate_phdr (unw_iterate_phdr_callback_t callback, void *data) { static int initialized = 0; - static unw_iterate_phdr_impl libc_impl; + static unw_iterate_phdr_func_t libc_impl; int rc = 0; struct map_iterator mi; unsigned long start, end, offset, flags; diff -Nru libunwind-1.7.2/src/dwarf/Gexpr.c libunwind-1.8.1/src/dwarf/Gexpr.c --- libunwind-1.7.2/src/dwarf/Gexpr.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/dwarf/Gexpr.c 2024-02-20 19:54:51.000000000 +0000 @@ -110,7 +110,7 @@ }; static inline unw_sword_t -sword (unw_addr_space_t as, unw_word_t val) +sword (unw_addr_space_t as UNUSED, unw_word_t val) { switch (dwarf_addr_size (as)) { diff -Nru libunwind-1.7.2/src/dwarf/Gfind_proc_info-lsb.c libunwind-1.8.1/src/dwarf/Gfind_proc_info-lsb.c --- libunwind-1.7.2/src/dwarf/Gfind_proc_info-lsb.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/dwarf/Gfind_proc_info-lsb.c 2024-02-20 19:54:51.000000000 +0000 @@ -120,7 +120,7 @@ ei.image = NULL; *load_offset = 0; - ret = elf_w (load_debuglink) (file, &ei, is_local); + ret = elf_w (load_debuginfo) (file, &ei, is_local); if (ret != 0) return ret; @@ -128,7 +128,7 @@ if (!shdr || (shdr->sh_offset + shdr->sh_size > ei.size)) { - munmap(ei.image, ei.size); + mi_munmap(ei.image, ei.size); return 1; } @@ -146,7 +146,7 @@ if (!*buf) { Debug (2, "failed to allocate zlib .debug_frame buffer, skipping\n"); - munmap(ei.image, ei.size); + mi_munmap(ei.image, ei.size); return 1; } @@ -156,8 +156,8 @@ if (ret != Z_OK) { Debug (2, "failed to decompress zlib .debug_frame, skipping\n"); - munmap(*buf, *bufsize); - munmap(ei.image, ei.size); + mi_munmap(*buf, *bufsize); + mi_munmap(ei.image, ei.size); return 1; } @@ -169,7 +169,7 @@ { Debug (2, "unknown compression type %d, skipping\n", chdr->ch_type); - munmap(ei.image, ei.size); + mi_munmap(ei.image, ei.size); return 1; } } @@ -182,7 +182,7 @@ if (!*buf) { Debug (2, "failed to allocate .debug_frame buffer, skipping\n"); - munmap(ei.image, ei.size); + mi_munmap(ei.image, ei.size); return 1; } @@ -207,7 +207,7 @@ break; } - munmap(ei.image, ei.size); + mi_munmap(ei.image, ei.size); return 0; } @@ -549,7 +549,7 @@ eh_frame); out: - munmap (ei.image, ei.size); + mi_munmap (ei.image, ei.size); return eh_frame; } @@ -804,7 +804,7 @@ cb_data.di_debug.format = -1; SIGPROCMASK (SIG_SETMASK, &unwi_full_mask, &saved_mask); - ret = dl_iterate_phdr (dwarf_callback, &cb_data); + ret = as->iterate_phdr_function (dwarf_callback, &cb_data); SIGPROCMASK (SIG_SETMASK, &saved_mask, NULL); if (ret > 0) @@ -966,7 +966,7 @@ if (as == unw_local_addr_space) { e = lookup (table, table_len, ip - ip_base - di->load_offset); - if (e && &e[1] < &table[table_len / sizeof (unw_word_t)]) + if (e && &e[1] < &table[table_len / sizeof (struct table_entry)]) last_ip = e[1].start_ip_offset + ip_base + di->load_offset; else last_ip = di->end_ip; @@ -1037,7 +1037,7 @@ } HIDDEN void -dwarf_put_unwind_info (unw_addr_space_t as, unw_proc_info_t *pi, void *arg) +dwarf_put_unwind_info (unw_addr_space_t as UNUSED, unw_proc_info_t *pi UNUSED, void *arg UNUSED) { return; /* always a nop */ } diff -Nru libunwind-1.7.2/src/dwarf/Gfind_unwind_table.c libunwind-1.8.1/src/dwarf/Gfind_unwind_table.c --- libunwind-1.7.2/src/dwarf/Gfind_unwind_table.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/dwarf/Gfind_unwind_table.c 2024-02-21 13:39:50.000000000 +0000 @@ -36,12 +36,15 @@ #define to_unw_word(p) ((unw_word_t) (uintptr_t) (p)) int -dwarf_find_unwind_table (struct elf_dyn_info *edi, unw_addr_space_t as, - const char *path, unw_word_t segbase, unw_word_t mapoff, - unw_word_t ip) +dwarf_find_unwind_table (struct elf_dyn_info *edi, + unw_addr_space_t as UNUSED, + const char *path UNUSED, + unw_word_t segbase, + unw_word_t mapoff, + unw_word_t ip UNUSED) { Elf_W(Phdr) *phdr, *ptxt = NULL, *peh_hdr = NULL, *pdyn = NULL; - unw_word_t addr, eh_frame_start, fde_count, load_base; + unw_word_t addr, eh_frame_start, fde_count, loadoff, load_base; unw_word_t max_load_addr = 0; unw_word_t start_ip = to_unw_word (-1); unw_word_t end_ip = 0; @@ -104,7 +107,8 @@ if (!ptxt) return 0; - load_base = segbase - ptxt->p_vaddr; + loadoff = mapoff + (ptxt->p_vaddr - ptxt->p_offset); + load_base = segbase - loadoff; start_ip += load_base; end_ip += load_base; diff -Nru libunwind-1.7.2/src/dwarf/Gget_proc_info_in_range.c libunwind-1.8.1/src/dwarf/Gget_proc_info_in_range.c --- libunwind-1.7.2/src/dwarf/Gget_proc_info_in_range.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/dwarf/Gget_proc_info_in_range.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,120 @@ +/* Copyright (C) 2022 Hewlett-Packard Co. + Contributed by David Mosberger-Tang . +This file is part of libunwind. +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include +#include "libunwind_i.h" +#include "dwarf-eh.h" +#include "dwarf_i.h" + +int +unw_get_proc_info_in_range (unw_word_t start_ip, + unw_word_t end_ip, + unw_word_t eh_frame_table, + unw_word_t eh_frame_table_len UNUSED, + unw_word_t exidx_frame_table UNUSED, + unw_word_t exidx_frame_table_len UNUSED, + unw_addr_space_t as, + unw_word_t ip, + unw_proc_info_t *pi, + int need_unwind_info, + void *arg) +{ + int ret = 0; + + unw_dyn_info_t di; + memset(&di, 0, sizeof(di)); + + di.start_ip = start_ip; + di.end_ip = end_ip; + di.gp = pi->gp; + di.u.rti.name_ptr = 0; + +#if UNW_TARGET_ARM + if (exidx_frame_table != 0) { + di.format = UNW_INFO_FORMAT_ARM_EXIDX; + di.u.rti.table_data = exidx_frame_table; + di.u.rti.table_len = exidx_frame_table_len; + di.u.rti.segbase = 0; + } + else +#endif + if (eh_frame_table != 0) { + unw_accessors_t *a = unw_get_accessors_int (as); + + unw_word_t data; + if ((*a->access_mem)(as, eh_frame_table, &data, 0, arg) < 0) { + return -UNW_EINVAL; + } + /* we are reading only the first 4 `char` members of `struct dwarf_eh_frame_hdr`, which + * are guaranteed to fit into the first `sizeof(unw_word_t)` bytes */ + struct dwarf_eh_frame_hdr exhdr; + memcpy(&exhdr, &data, sizeof(data)); + + if (exhdr.version != DW_EH_VERSION) { + Debug (1, "Unexpected version %d\n", exhdr.version); + return -UNW_EBADVERSION; + } + unw_word_t addr = eh_frame_table + offsetof(struct dwarf_eh_frame_hdr, eh_frame); + unw_word_t eh_frame_start; + unw_word_t fde_count; + + /* read eh_frame_ptr */ + if ((ret = dwarf_read_encoded_pointer(as, a, &addr, exhdr.eh_frame_ptr_enc, pi, &eh_frame_start, arg)) < 0) { + return ret; + } + + /* read fde_count */ + if ((ret = dwarf_read_encoded_pointer(as, a, &addr, exhdr.fde_count_enc, pi, &fde_count, arg)) < 0) { + return ret; + } + + // If there are no frame table entries + if (fde_count == 0) { + Debug(1, "No frame table entries\n"); + return -UNW_ENOINFO; + } + + if (exhdr.table_enc != (DW_EH_PE_datarel | DW_EH_PE_sdata4)) { + Debug (1, "Table encoding not supported %x\n", exhdr.table_enc); + return -UNW_EINVAL; + } + + di.format = UNW_INFO_FORMAT_REMOTE_TABLE; + di.u.rti.table_data = addr; + di.u.rti.table_len = (fde_count * 8) / sizeof (unw_word_t); + di.u.rti.segbase = eh_frame_table; + } + else { + Debug (1, "No frame table data\n"); + return -UNW_ENOINFO; + } + + ret = tdep_search_unwind_table(as, ip, &di, pi, need_unwind_info, arg); + if (ret < 0) { + return ret; + } + + if (ip < pi->start_ip || ip >= pi->end_ip) { + Debug (1, "ip %p not in range start_ip %p end_ip %p\n", ip, pi->start_ip, pi->end_ip); + return -UNW_ENOINFO; + } + return UNW_ESUCCESS; +} + diff -Nru libunwind-1.7.2/src/dwarf/Gparser.c libunwind-1.8.1/src/dwarf/Gparser.c --- libunwind-1.7.2/src/dwarf/Gparser.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/dwarf/Gparser.c 2024-02-20 19:54:51.000000000 +0000 @@ -490,7 +490,9 @@ } static int -parse_dynamic (struct dwarf_cursor *c, unw_word_t ip, dwarf_state_record_t *sr) +parse_dynamic (struct dwarf_cursor *c UNUSED, + unw_word_t ip UNUSED, + dwarf_state_record_t *sr UNUSED) { Debug (1, "Not yet implemented\n"); return -UNW_ENOINFO; @@ -573,14 +575,14 @@ cache->log_size = DWARF_DEFAULT_LOG_UNW_CACHE_SIZE; } else { if (cache->hash && cache->hash != cache->default_hash) - munmap(cache->hash, DWARF_UNW_HASH_SIZE(cache->prev_log_size) - * sizeof (cache->hash[0])); + mi_munmap(cache->hash, DWARF_UNW_HASH_SIZE(cache->prev_log_size) + * sizeof (cache->hash[0])); if (cache->buckets && cache->buckets != cache->default_buckets) - munmap(cache->buckets, DWARF_UNW_CACHE_SIZE(cache->prev_log_size) - * sizeof (cache->buckets[0])); + mi_munmap(cache->buckets, DWARF_UNW_CACHE_SIZE(cache->prev_log_size) + * sizeof (cache->buckets[0])); if (cache->links && cache->links != cache->default_links) - munmap(cache->links, DWARF_UNW_CACHE_SIZE(cache->prev_log_size) - * sizeof (cache->links[0])); + mi_munmap(cache->links, DWARF_UNW_CACHE_SIZE(cache->prev_log_size) + * sizeof (cache->links[0])); GET_MEMORY(cache->hash, DWARF_UNW_HASH_SIZE(cache->log_size) * sizeof (cache->hash[0])); GET_MEMORY(cache->buckets, DWARF_UNW_CACHE_SIZE(cache->log_size) @@ -963,7 +965,6 @@ if (DWARF_IS_NULL_LOC (c->loc[rs->ret_addr_column])) { c->ip = 0; - ret = 0; } else { @@ -984,8 +985,8 @@ } #endif c->ip = ip; - ret = 1; } + ret = (c->ip != 0) ? 1 : 0; /* XXX: check for ip to be code_aligned */ if (c->ip == prev_ip && c->cfa == prev_cfa) @@ -1097,9 +1098,9 @@ } static int -dwarf_reg_states_dynamic_iterate(struct dwarf_cursor *c, - unw_reg_states_callback cb, - void *token) +dwarf_reg_states_dynamic_iterate(struct dwarf_cursor *c UNUSED, + unw_reg_states_callback cb UNUSED, + void *token UNUSED) { Debug (1, "Not yet implemented\n"); return -UNW_ENOINFO; diff -Nru libunwind-1.7.2/src/dwarf/Lget_proc_info_in_range.c libunwind-1.8.1/src/dwarf/Lget_proc_info_in_range.c --- libunwind-1.7.2/src/dwarf/Lget_proc_info_in_range.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/dwarf/Lget_proc_info_in_range.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,5 @@ +#define UNW_LOCAL_ONLY +#include +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gget_proc_info_in_range.c" +#endif diff -Nru libunwind-1.7.2/src/elfxx.c libunwind-1.8.1/src/elfxx.c --- libunwind-1.7.2/src/elfxx.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/elfxx.c 2024-02-20 19:54:51.000000000 +0000 @@ -30,12 +30,40 @@ #include #include -#ifdef HAVE_LZMA +#if HAVE_LZMA #include #endif /* HAVE_LZMA */ +struct symbol_info +{ + const char *strtab; + const Elf_W (Sym) *sym; + Elf_W (Addr) start_ip; +}; + +struct symbol_lookup_context +{ + unw_addr_space_t as; + unw_word_t ip; + struct elf_image *ei; + Elf_W (Addr) load_offset; + Elf_W (Addr) *min_dist; +}; + +struct symbol_callback_data +{ + char *buf; + size_t buf_len; +}; + +struct ip_range_callback_data +{ + Elf_W (Addr) *start_ip; + Elf_W (Addr) *end_ip; +}; + static Elf_W (Shdr)* -elf_w (section_table) (struct elf_image *ei) +elf_w (section_table) (const struct elf_image *ei) { Elf_W (Ehdr) *ehdr = ei->image; Elf_W (Off) soff; @@ -53,7 +81,7 @@ } static char* -elf_w (string_table) (struct elf_image *ei, int section) +elf_w (string_table) (const struct elf_image *ei, int section) { Elf_W (Ehdr) *ehdr = ei->image; Elf_W (Off) soff, str_soff; @@ -85,11 +113,127 @@ } static int -elf_w (lookup_symbol) (unw_addr_space_t as, - unw_word_t ip, struct elf_image *ei, - Elf_W (Addr) load_offset, - char *buf, size_t buf_len, Elf_W (Addr) *min_dist) +elf_w (lookup_symbol_from_dynamic) (unw_addr_space_t as UNUSED, + const struct symbol_lookup_context *context, + int (*callback)(const struct symbol_lookup_context *context, + const struct symbol_info *syminfo, void *data), + void *data) + +{ + struct elf_image *ei = context->ei; + Elf_W (Addr) load_offset = context->load_offset; + Elf_W (Addr) file_offset = 0; + Elf_W (Ehdr) *ehdr = ei->image; + Elf_W (Sym) *sym = NULL, *symtab = NULL; + Elf_W (Phdr) *phdr; + Elf_W (Word) sym_num; + Elf_W (Word) *hash = NULL, *gnu_hash = NULL; + Elf_W (Addr) val; + const char *strtab = NULL; + int ret = -UNW_ENOINFO; + size_t i; + Elf_W(Dyn) *dyn = NULL; + + phdr = (Elf_W (Phdr) *) ((char *) ei->image + ehdr->e_phoff); + for (i = 0; i < ehdr->e_phnum; ++i) + if (phdr[i].p_type == PT_PHDR) + { + file_offset = phdr[i].p_vaddr - phdr[i].p_offset; + } + else if (phdr[i].p_type == PT_DYNAMIC) + { + dyn = (Elf_W (Dyn) *) ((char *)ei->image + phdr[i].p_offset); + break; + } + + if (!dyn) + return -UNW_ENOINFO; + + for (; dyn->d_tag != DT_NULL; ++dyn) + { + switch (dyn->d_tag) + { + case DT_SYMTAB: + symtab = (Elf_W (Sym) *) ((char *) ei->image + dyn->d_un.d_ptr - file_offset); + break; + case DT_STRTAB: + strtab = (const char *) ((char *) ei->image + dyn->d_un.d_ptr - file_offset); + break; + case DT_HASH: + hash = (Elf_W (Word) *) ((char *) ei->image + dyn->d_un.d_ptr - file_offset); + break; + case DT_GNU_HASH: + gnu_hash = (Elf_W (Word) *) ((char *) ei->image + dyn->d_un.d_ptr - file_offset); + break; + default: + break; + } + } + + if (!symtab || !strtab || (!hash && !gnu_hash)) + return -UNW_ENOINFO; + + if (gnu_hash) + { + uint32_t *buckets = gnu_hash + 4 + (gnu_hash[2] * sizeof(size_t)/4); + uint32_t *hashval; + for (i = sym_num = 0; i < gnu_hash[0]; i++) + if (buckets[i] > sym_num) + sym_num = buckets[i]; + + if (sym_num) + { + hashval = buckets + gnu_hash[0] + (sym_num - gnu_hash[1]); + do sym_num++; + while (!(*hashval++ & 1)); + } + } + else + { + sym_num = hash[1]; + } + + for (i = 0; i < sym_num; ++i) + { + sym = &symtab[i]; + if (ELF_W (ST_TYPE) (sym->st_info) == STT_FUNC + && sym->st_shndx != SHN_UNDEF) + { + val = sym->st_value; + if (sym->st_shndx != SHN_ABS) + val += load_offset; + if (tdep_get_func_addr (as, val, &val) < 0) + continue; + Debug (16, "0x%016lx info=0x%02x %s\n", + (long) val, sym->st_info, strtab + sym->st_name); + + /* as long as found one, the return will be success*/ + struct symbol_info syminfo = + { + .strtab = strtab, + .sym = sym, + .start_ip = val + }; + if ((*callback) (context, &syminfo, data) == UNW_ESUCCESS) + { + if (ret != UNW_ESUCCESS) + ret = UNW_ESUCCESS; + } + } + } + + return ret; +} + +static int +elf_w (lookup_symbol_closeness) (unw_addr_space_t as UNUSED, + const struct symbol_lookup_context *context, + int (*callback)(const struct symbol_lookup_context *context, + const struct symbol_info *syminfo, void *data), + void *data) { + struct elf_image *ei = context->ei; + Elf_W (Addr) load_offset = context->load_offset; size_t syment_size; Elf_W (Ehdr) *ehdr = ei->image; Elf_W (Sym) *sym, *symtab, *symtab_end; @@ -137,13 +281,17 @@ Debug (16, "0x%016lx info=0x%02x %s\n", (long) val, sym->st_info, strtab + sym->st_name); - if ((Elf_W (Addr)) (ip - val) < *min_dist) + /* as long as found one, the return will be success*/ + struct symbol_info syminfo = { - *min_dist = (Elf_W (Addr)) (ip - val); - strncpy (buf, strtab + sym->st_name, buf_len); - buf[buf_len - 1] = '\0'; - ret = (strlen (strtab + sym->st_name) >= buf_len - ? -UNW_ENOMEM : 0); + .strtab = strtab, + .sym = sym, + .start_ip = val + }; + if ((*callback) (context, &syminfo, data) == UNW_ESUCCESS) + { + if (ret != UNW_ESUCCESS) + ret = UNW_ESUCCESS; } } } @@ -154,9 +302,110 @@ } shdr = (Elf_W (Shdr) *) (((char *) shdr) + ehdr->e_shentsize); } + + if (ret != UNW_ESUCCESS) + ret = elf_w (lookup_symbol_from_dynamic) (as, context, callback, data); + + return ret; +} + +static int +elf_w (lookup_symbol_callback)(const struct symbol_lookup_context *context, + const struct symbol_info *syminfo, void *data) +{ + int ret = -UNW_ENOINFO; + struct symbol_callback_data *d = data; + + if (context->ip < syminfo->start_ip || + context->ip >= (syminfo->start_ip + syminfo->sym->st_size)) + return -UNW_ENOINFO; + + if ((Elf_W (Addr)) (context->ip - syminfo->start_ip) < *(context->min_dist)) + { + *(context->min_dist) = (Elf_W (Addr)) (context->ip - syminfo->start_ip); + Debug (1, "candidate sym: %s@0x%lx\n", syminfo->strtab + syminfo->sym->st_name, syminfo->start_ip); + strncpy (d->buf, syminfo->strtab + syminfo->sym->st_name, d->buf_len); + d->buf[d->buf_len - 1] = '\0'; + ret = (strlen (syminfo->strtab + syminfo->sym->st_name) >= d->buf_len + ? -UNW_ENOMEM : UNW_ESUCCESS); + } + + return ret; +} + +static int +elf_w (lookup_symbol) (unw_addr_space_t as, + unw_word_t ip, struct elf_image *ei, + Elf_W (Addr) load_offset, + char *buf, size_t buf_len, Elf_W (Addr) *min_dist) +{ + struct symbol_lookup_context context = + { + .as = as, + .ip = ip, + .ei = ei, + .load_offset = load_offset, + .min_dist = min_dist, + }; + struct symbol_callback_data data = + { + .buf = buf, + .buf_len = buf_len, + }; + return elf_w (lookup_symbol_closeness) (as, + &context, + elf_w (lookup_symbol_callback), + &data); +} + +static int +elf_w (lookup_ip_range_callback)(const struct symbol_lookup_context *context, + const struct symbol_info *syminfo, void *data) +{ + int ret = -UNW_ENOINFO; + struct ip_range_callback_data *d = data; + + if (context->ip < syminfo->start_ip || + context->ip >= (syminfo->start_ip + syminfo->sym->st_size)) + return -UNW_ENOINFO; + + if ((Elf_W (Addr)) (context->ip - syminfo->start_ip) < *(context->min_dist)) + { + *(context->min_dist) = (Elf_W (Addr)) (context->ip - syminfo->start_ip); + *(d->start_ip) = syminfo->start_ip; + *(d->end_ip) = syminfo->start_ip + syminfo->sym->st_size; + + ret = UNW_ESUCCESS; + } + return ret; } +static int +elf_w (lookup_ip_range)(unw_addr_space_t as, + unw_word_t ip, struct elf_image *ei, + Elf_W (Addr) load_offset, Elf_W (Addr) *start_ip, + Elf_W (Addr) *end_ip, Elf_W (Addr) *min_dist) +{ + struct symbol_lookup_context context = + { + .as = as, + .ip = ip, + .ei = ei, + .load_offset = load_offset, + .min_dist = min_dist + }; + struct ip_range_callback_data data = + { + .start_ip = start_ip, + .end_ip = end_ip + }; + return elf_w (lookup_symbol_closeness) (as, + &context, + elf_w (lookup_ip_range_callback), + &data); +} + static Elf_W (Addr) elf_w (get_load_offset) (struct elf_image *ei, unsigned long segbase) { @@ -168,7 +417,7 @@ // PT_LOAD program headers p_offset however is not guaranteed to be aligned on a // page size, ld.lld generate libraries where this is not the case. So we must // make sure we compare both values with the same alignment. - unsigned long pagesize_alignment_mask = ~(((unsigned long)getpagesize()) - 1UL); + unsigned long pagesize_alignment_mask = ~(unw_page_size - 1UL); ehdr = ei->image; phdr = (Elf_W (Phdr) *) ((char *) ei->image + ehdr->e_phoff); @@ -184,8 +433,62 @@ } #if HAVE_LZMA + +#define XZ_MAX_ALLOCS 16 +struct xz_allocator_data { + struct { + void *ptr; + size_t size; + } allocations[XZ_MAX_ALLOCS]; + uint8_t n_allocs; +}; + +static void* +xz_alloc (void *opaque, size_t nmemb, size_t size) +{ + struct xz_allocator_data *data = opaque; + if (XZ_MAX_ALLOCS == data->n_allocs) + return NULL; + size = UNW_ALIGN(size * nmemb, unw_page_size); + void *ptr; + GET_MEMORY (ptr, size); + if (!ptr) return ptr; + data->allocations[data->n_allocs].ptr = ptr; + data->allocations[data->n_allocs].size = size; + ++data->n_allocs; + return ptr; +} + +static void +xz_free (void *opaque, void *ptr) +{ + struct xz_allocator_data *data = opaque; + for (uint8_t i = data->n_allocs; i-- > 0;) + { + if (data->allocations[i].ptr == ptr) + { + mi_munmap (ptr, data->allocations[i].size); + --data->n_allocs; + if (i != data->n_allocs) + { + data->allocations[i] = data->allocations[data->n_allocs]; + } + return; + } + } +} + +static void +xz_free_all (struct xz_allocator_data *data) +{ + while (data->n_allocs-- > 0) + { + mi_munmap (data->allocations[data->n_allocs].ptr, data->allocations[data->n_allocs].size); + } +} + static size_t -xz_uncompressed_size (uint8_t *compressed, size_t length) +xz_uncompressed_size (lzma_allocator *xz_allocator, uint8_t *compressed, size_t length) { uint64_t memlimit = UINT64_MAX; size_t ret = 0, pos = 0; @@ -203,7 +506,7 @@ return 0; uint8_t *indexdata = footer - options.backward_size; - if (lzma_index_buffer_decode (&index, &memlimit, NULL, indexdata, + if (lzma_index_buffer_decode (&index, &memlimit, xz_allocator, indexdata, &pos, options.backward_size) != LZMA_OK) return 0; @@ -212,7 +515,7 @@ ret = lzma_index_uncompressed_size (index); } - lzma_index_end (index, NULL); + lzma_index_end (index, xz_allocator); return ret; } @@ -224,6 +527,14 @@ uint64_t memlimit = UINT64_MAX; /* no memory limit */ size_t compressed_len, uncompressed_len; + struct xz_allocator_data allocator_data; + lzma_allocator xz_allocator = + { + .alloc = xz_alloc, + .free = xz_free, + .opaque = &allocator_data + }; + shdr = elf_w (find_section) (ei, ".gnu_debugdata"); if (!shdr) return 0; @@ -231,29 +542,34 @@ compressed = ((uint8_t *) ei->image) + shdr->sh_offset; compressed_len = shdr->sh_size; - uncompressed_len = xz_uncompressed_size (compressed, compressed_len); + uncompressed_len = xz_uncompressed_size (&xz_allocator, compressed, compressed_len); if (uncompressed_len == 0) { + xz_free_all (&allocator_data); Debug (1, "invalid .gnu_debugdata contents\n"); return 0; } mdi->size = uncompressed_len; - mdi->image = mmap (NULL, uncompressed_len, PROT_READ|PROT_WRITE, - MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + GET_MEMORY (mdi->image, uncompressed_len); - if (mdi->image == MAP_FAILED) - return 0; + if (!mdi->image) + { + xz_free_all (&allocator_data); + return 0; + } size_t in_pos = 0, out_pos = 0; lzma_ret lret; - lret = lzma_stream_buffer_decode (&memlimit, 0, NULL, + lret = lzma_stream_buffer_decode (&memlimit, 0, &xz_allocator, compressed, &in_pos, compressed_len, mdi->image, &out_pos, mdi->size); + xz_free_all (&allocator_data); + if (lret != LZMA_OK) { Debug (1, "LZMA decompression failed: %d\n", lret); - munmap (mdi->image, mdi->size); + mi_munmap (mdi->image, mdi->size); return 0; } @@ -261,7 +577,7 @@ } #else static int -elf_w (extract_minidebuginfo) (struct elf_image *ei, struct elf_image *mdi) +elf_w (extract_minidebuginfo) (struct elf_image *ei UNUSED, struct elf_image *mdi UNUSED) { return 0; } @@ -299,7 +615,7 @@ ret = ret_mdi; } - munmap (mdi.image, mdi.size); + mi_munmap (mdi.image, mdi.size); } if (min_dist >= ei->size) @@ -322,20 +638,97 @@ if (ret < 0) return ret; - ret = elf_w (load_debuglink) (file, &ei, 1); + ret = elf_w (load_debuginfo) (file, &ei, 1); if (ret < 0) return ret; ret = elf_w (get_proc_name_in_image) (as, &ei, segbase, ip, buf, buf_len, offp); - munmap (ei.image, ei.size); + mi_munmap (ei.image, ei.size); ei.image = NULL; return ret; } +HIDDEN int +elf_w (get_proc_ip_range_in_image) (unw_addr_space_t as, struct elf_image *ei, + unsigned long segbase, + unw_word_t ip, + unw_word_t *start, unw_word_t *end) +{ + Elf_W (Addr) load_offset; + Elf_W (Addr) min_dist = ~(Elf_W (Addr))0; + int ret; + + load_offset = elf_w (get_load_offset) (ei, segbase); + ret = elf_w (lookup_ip_range) (as, ip, ei, load_offset, start, end, &min_dist); + + /* If the ELF image has MiniDebugInfo embedded in it, look up the symbol in + there as well and replace the previously found if it is closer. */ + struct elf_image mdi; + if (elf_w (extract_minidebuginfo) (ei, &mdi)) + { + int ret_mdi = elf_w (lookup_ip_range) (as, ip, &mdi, load_offset, start, + end, &min_dist); + + /* Closer symbol was found (possibly truncated). */ + if (ret_mdi == 0 || ret_mdi == -UNW_ENOMEM) + { + ret = ret_mdi; + } + + mi_munmap (mdi.image, mdi.size); + } + + if (min_dist >= ei->size) + return -UNW_ENOINFO; /* not found */ + return ret; +} + +HIDDEN int +elf_w (get_proc_ip_range) (unw_addr_space_t as, pid_t pid, unw_word_t ip, + unw_word_t *start, unw_word_t *end) +{ + unsigned long segbase, mapoff; + struct elf_image ei; + int ret; + char file[PATH_MAX]; + + ret = tdep_get_elf_image (&ei, pid, ip, &segbase, &mapoff, file, PATH_MAX); + if (ret < 0) + return ret; + + ret = elf_w (load_debuginfo) (file, &ei, 1); + if (ret < 0) + return ret; + + ret = elf_w (get_proc_ip_range_in_image) (as, &ei, segbase, ip, start, end); + + mi_munmap (ei.image, ei.size); + ei.image = NULL; + + return ret; +} + +HIDDEN int +elf_w (get_elf_filename) (unw_addr_space_t as, pid_t pid, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp) +{ + unsigned long segbase, mapoff; + int ret = UNW_ESUCCESS; + + // use NULL to no map elf image + ret = tdep_get_elf_image (NULL, pid, ip, &segbase, &mapoff, buf, buf_len); + if (ret < 0) + return ret; + + if (offp) + *offp = ip - segbase + mapoff; + return ret; +} + HIDDEN Elf_W (Shdr)* -elf_w (find_section) (struct elf_image *ei, const char* secname) +elf_w (find_section) (const struct elf_image *ei, const char* secname) { Elf_W (Ehdr) *ehdr = ei->image; Elf_W (Shdr) *shdr; @@ -378,6 +771,95 @@ return 0; } + +static char * +elf_w (add_hex_byte) (char *str, uint8_t byte) +{ + const char hex[] = "0123456789abcdef"; + + *str++ = hex[byte >> 4]; + *str++ = hex[byte & 0xf]; + *str = 0; + + return str; +} + + +static int +elf_w (find_build_id_path) (const struct elf_image *ei, char *path, unsigned path_len) +{ +/* + * build-id is only available on GNU plaforms. So on non-GNU platforms this + * function just returns fail (-1). + */ +#if defined(ELF_NOTE_GNU) && defined(NT_GNU_BUILD_ID) + const Elf_W (Ehdr) *ehdr = ei->image; + const Elf_W (Phdr) *phdr; + unsigned i; + + if (!elf_w (valid_object) (ei)) + return -1; + + phdr = (Elf_W (Phdr) *) ((uint8_t *) ehdr + ehdr->e_phoff); + + for (i = 0; i < ehdr->e_phnum; ++i, phdr = (const Elf_W (Phdr) *) (((const uint8_t *) phdr) + ehdr->e_phentsize)) + { + const uint8_t *notes; + const uint8_t *notes_end; + + /* The build-id is in a note section */ + if (phdr->p_type != PT_NOTE) + continue; + + notes = ((const uint8_t *) ehdr) + phdr->p_offset; + notes_end = notes + phdr->p_memsz; + + while(notes < notes_end) + { + const char prefix[] = "/usr/lib/debug/.build-id/"; + + /* See "man 5 elf" for notes about alignment in Nhdr */ + const Elf_W(Nhdr) *nhdr = (const ElfW(Nhdr) *) notes; + const ElfW(Word) namesz = nhdr->n_namesz; + const ElfW(Word) descsz = nhdr->n_descsz; + const ElfW(Word) nameasz = UNW_ALIGN(namesz, 4); /* Aligned size */ + const char *name = (const char *) (nhdr + 1); + const uint8_t *desc = (const uint8_t *) name + nameasz; + unsigned j; + + notes += sizeof(*nhdr) + nameasz + UNW_ALIGN(descsz, 4); + + if ((namesz != sizeof(ELF_NOTE_GNU)) || /* Spec says must be "GNU" with a NULL */ + (nhdr->n_type != NT_GNU_BUILD_ID) || /* Spec says must be NT_GNU_BUILD_ID */ + (strcmp(name, ELF_NOTE_GNU) != 0)) /* Must be "GNU" with NULL termination */ + continue; + + /* Validate that we have enough space */ + if (path_len < (sizeof(prefix) + /* Path prefix inc NULL */ + 2 + /* Subdirectory */ + 1 + /* Directory separator */ + (2 * (descsz - 1)) + /* Leaf filename */ + 6)) /* .debug extension */ + return -1; + + memcpy(path, prefix, sizeof(prefix)); + + path = elf_w (add_hex_byte) (path + sizeof(prefix) - 1, *desc); + *path++ = '/'; + + for(j = 1, ++desc; j < descsz; ++j, ++desc) + path = elf_w (add_hex_byte) (path, *desc); + + strcat(path, ".debug"); + + return 0; + } + } +#endif /* defined(ELF_NOTE_GNU) */ + + return -1; +} + /* Load a debug section, following .gnu_debuglink if appropriate * Loads ei from file if not already mapped. * If is_local, will also search sys directories /usr/local/dbg @@ -386,18 +868,19 @@ * ei will be mapped to file or the located .gnu_debuglink from file */ HIDDEN int -elf_w (load_debuglink) (const char* file, struct elf_image *ei, int is_local) +elf_w (load_debuginfo) (const char* file, struct elf_image *ei, int is_local) { int ret; Elf_W (Shdr) *shdr; Elf_W (Ehdr) *prev_image; off_t prev_size; + char path[PATH_MAX]; if (!ei->image) { ret = elf_map_image(ei, file); if (ret) - return ret; + return ret; } prev_image = ei->image; @@ -408,13 +891,27 @@ return 0; } + ret = elf_w (find_build_id_path) (ei, path, sizeof(path)); + if (ret == 0) + { + ei->image = NULL; + + ret = elf_w (load_debuginfo) (path, ei, -1); + if (ret == 0) + { + mi_munmap (prev_image, prev_size); + return 0; + } + + ei->image = prev_image; + ei->size = prev_size; + } + shdr = elf_w (find_section) (ei, ".gnu_debuglink"); if (shdr) { if (shdr->sh_size >= PATH_MAX || (shdr->sh_offset + shdr->sh_size > ei->size)) - { - return 0; - } + return 0; { char linkbuf[shdr->sh_size]; @@ -445,14 +942,14 @@ strcpy (newname, basedir); strcat (newname, "/"); strcat (newname, linkbuf); - ret = elf_w (load_debuglink) (newname, ei, -1); + ret = elf_w (load_debuginfo) (newname, ei, -1); if (ret == -1) { strcpy (newname, basedir); strcat (newname, "/.debug/"); strcat (newname, linkbuf); - ret = elf_w (load_debuglink) (newname, ei, -1); + ret = elf_w (load_debuginfo) (newname, ei, -1); } if (ret == -1 && is_local == 1) @@ -461,7 +958,7 @@ strcat (newname, basedir); strcat (newname, "/"); strcat (newname, linkbuf); - ret = elf_w (load_debuglink) (newname, ei, -1); + ret = elf_w (load_debuginfo) (newname, ei, -1); } if (ret == -1) @@ -474,7 +971,7 @@ } else { - munmap (prev_image, prev_size); + mi_munmap (prev_image, prev_size); } return ret; diff -Nru libunwind-1.7.2/src/elfxx.h libunwind-1.8.1/src/elfxx.h --- libunwind-1.7.2/src/elfxx.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/elfxx.h 2024-02-20 19:54:51.000000000 +0000 @@ -53,11 +53,22 @@ unw_word_t ip, char *buf, size_t buf_len, unw_word_t *offp); -extern Elf_W (Shdr)* elf_w (find_section) (struct elf_image *ei, const char* secname); -extern int elf_w (load_debuglink) (const char* file, struct elf_image *ei, int is_local); +extern int elf_w (get_proc_ip_range) (unw_addr_space_t as, + pid_t pid, unw_word_t ip, + unw_word_t *start, unw_word_t *end); + +extern int elf_w (get_proc_ip_range_in_image) (unw_addr_space_t as, struct elf_image *ei, + unsigned long segbase, unw_word_t ip, + unw_word_t *start, unw_word_t *end); + +extern int elf_w (get_elf_filename) (unw_addr_space_t as, pid_t pid, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp); + +extern Elf_W (Shdr)* elf_w (find_section) (const struct elf_image *ei, const char* secname); +extern int elf_w (load_debuginfo) (const char* file, struct elf_image *ei, int is_local); static inline int -elf_w (valid_object) (struct elf_image *ei) +elf_w (valid_object) (const struct elf_image *ei) { if (ei->size <= EI_VERSION) return 0; @@ -85,14 +96,14 @@ } ei->size = stat.st_size; - ei->image = mmap (NULL, ei->size, PROT_READ, MAP_PRIVATE, fd, 0); + ei->image = mi_mmap (NULL, ei->size, PROT_READ, MAP_PRIVATE, fd, 0); close (fd); if (ei->image == MAP_FAILED) return -1; if (!elf_w (valid_object) (ei)) { - munmap(ei->image, ei->size); + mi_munmap(ei->image, ei->size); return -1; } diff -Nru libunwind-1.7.2/src/hppa/Ginit.c libunwind-1.8.1/src/hppa/Ginit.c --- libunwind-1.7.2/src/hppa/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/hppa/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -91,11 +91,11 @@ if (write) { Debug (12, "mem[%x] <- %x\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "mem[%x] -> %x\n", addr, *val); } return 0; @@ -117,12 +117,12 @@ if (write) { - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); Debug (12, "%s <- %x\n", unw_regname (reg), *val); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> %x\n", unw_regname (reg), *val); } return 0; @@ -174,10 +174,23 @@ return _Uelf32_get_proc_name (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return _Uelf32_get_elf_filename (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void hppa_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -187,6 +200,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = hppa_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/ia64/Ginit.c libunwind-1.8.1/src/ia64/Ginit.c --- libunwind-1.7.2/src/ia64/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ia64/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -80,11 +80,11 @@ if (write) { Debug (12, "mem[%lx] <- %lx\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "mem[%lx] -> %lx\n", addr, *val); } return 0; @@ -293,7 +293,7 @@ } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> %lx\n", unw_regname (reg), *val); } return 0; @@ -352,6 +352,14 @@ return _Uelf64_get_proc_name (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return _Uelf64_get_elf_filename (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void ia64_local_addr_space_init (void) { @@ -362,6 +370,11 @@ #elif defined(__hpux) local_addr_space.abi = ABI_HPUX; #endif +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = tdep_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -371,6 +384,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = ia64_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/ia64/Gtables.c libunwind-1.8.1/src/ia64/Gtables.c --- libunwind-1.7.2/src/ia64/Gtables.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ia64/Gtables.c 2024-02-20 19:54:51.000000000 +0000 @@ -624,7 +624,7 @@ int ret; SIGPROCMASK (SIG_SETMASK, &unwi_full_mask, &saved_mask); - ret = dl_iterate_phdr (check_callback, as); + ret = as->iterate_phdr_function (check_callback, as); SIGPROCMASK (SIG_SETMASK, &saved_mask, NULL); return ret; } @@ -655,7 +655,7 @@ di.u.ti.segbase = ip; /* this is cheap... */ SIGPROCMASK (SIG_SETMASK, &unwi_full_mask, &saved_mask); - ret = dl_iterate_phdr (callback, &di); + ret = as->iterate_phdr_function (callback, &di); SIGPROCMASK (SIG_SETMASK, &saved_mask, NULL); if (ret <= 0) diff -Nru libunwind-1.7.2/src/loongarch64/Gglobal.c libunwind-1.8.1/src/loongarch64/Gglobal.c --- libunwind-1.7.2/src/loongarch64/Gglobal.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/loongarch64/Gglobal.c 2024-02-20 19:54:51.000000000 +0000 @@ -47,8 +47,6 @@ dwarf_init (); #ifndef UNW_REMOTE_ONLY - tdep_init_mem_validate (); - loongarch64_local_addr_space_init (); #endif tdep_init_done = 1; /* signal that we're initialized... */ diff -Nru libunwind-1.7.2/src/loongarch64/Ginit.c libunwind-1.8.1/src/loongarch64/Ginit.c --- libunwind-1.7.2/src/loongarch64/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/loongarch64/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -84,232 +84,6 @@ } -static int mem_validate_pipe[2] = {-1, -1}; - -#ifdef HAVE_PIPE2 -static inline void -do_pipe2 (int pipefd[2]) -{ - pipe2 (pipefd, O_CLOEXEC | O_NONBLOCK); -} -#else -static inline void -set_pipe_flags (int fd) -{ - int fd_flags = fcntl (fd, F_GETFD, 0); - int status_flags = fcntl (fd, F_GETFL, 0); - - fd_flags |= FD_CLOEXEC; - fcntl (fd, F_SETFD, fd_flags); - - status_flags |= O_NONBLOCK; - fcntl (fd, F_SETFL, status_flags); -} - -static inline void -do_pipe2 (int pipefd[2]) -{ - pipe (pipefd); - set_pipe_flags(pipefd[0]); - set_pipe_flags(pipefd[1]); -} -#endif - -static inline void -open_pipe (void) -{ - if (mem_validate_pipe[0] != -1) - close (mem_validate_pipe[0]); - if (mem_validate_pipe[1] != -1) - close (mem_validate_pipe[1]); - - do_pipe2 (mem_validate_pipe); -} - -ALWAYS_INLINE -static int -write_validate (void *addr) -{ - int ret = -1; - ssize_t bytes = 0; - - do - { - char buf; - bytes = read (mem_validate_pipe[0], &buf, 1); - } - while ( errno == EINTR ); - - int valid_read = (bytes > 0 || errno == EAGAIN || errno == EWOULDBLOCK); - if (!valid_read) - { - // re-open closed pipe - open_pipe (); - } - - do - { - ret = write (mem_validate_pipe[1], addr, 1); - } - while ( errno == EINTR ); - - return ret; -} - -static int (*mem_validate_func) (void *addr, size_t len); -static int msync_validate (void *addr, size_t len) -{ - if (msync (addr, len, MS_ASYNC) != 0) - { - return -1; - } - - return write_validate (addr); -} - -#ifdef HAVE_MINCORE -static int mincore_validate (void *addr, size_t len) -{ - unsigned char mvec[2]; /* Unaligned access may cross page boundary */ - - /* mincore could fail with EAGAIN but we conservatively return -1 - instead of looping. */ - if (mincore (addr, len, (unsigned char *)mvec) != 0) - { - return -1; - } - - return write_validate (addr); -} -#endif - -/* Initialise memory validation method. On linux kernels <2.6.21, - mincore() returns incorrect value for MAP_PRIVATE mappings, - such as stacks. If mincore() was available at compile time, - check if we can actually use it. If not, use msync() instead. */ -HIDDEN void -tdep_init_mem_validate (void) -{ - open_pipe (); - -#ifdef HAVE_MINCORE - unsigned char present = 1; - size_t len = unw_page_size; - unw_word_t addr = uwn_page_start((unw_word_t)&present); - unsigned char mvec[1]; - int ret; - while ((ret = mincore ((void*)addr, len, (unsigned char *)mvec)) == -1 && - errno == EAGAIN) - { - } - if (ret == 0) - { - Debug(1, "using mincore to validate memory\n"); - mem_validate_func = mincore_validate; - } - else -#endif - { - Debug(1, "using msync to validate memory\n"); - mem_validate_func = msync_validate; - } -} - -/* Cache of already validated addresses */ -#define NLGA 4 -#if defined(HAVE___CACHE_PER_THREAD) && HAVE___CACHE_PER_THREAD -// thread-local variant -static _Thread_local unw_word_t last_good_addr[NLGA]; -static _Thread_local int lga_victim; - -static int -is_cached_valid_mem(unw_word_t addr) -{ - int i; - for (i = 0; i < NLGA; i++) - { - if (addr == last_good_addr[i]) - return 1; - } - return 0; -} - -static void -cache_valid_mem(unw_word_t addr) -{ - int i, victim; - victim = lga_victim; - for (i = 0; i < NLGA; i++) { - if (last_good_addr[victim] == 0) { - last_good_addr[victim] = addr; - return; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - last_good_addr[victim] = addr; - victim = (victim + 1) % NLGA; - lga_victim = victim; -} - -#else -// global, thread safe variant -static _Atomic unw_word_t last_good_addr[NLGA]; -static _Atomic int lga_victim; - -static int -is_cached_valid_mem(unw_word_t addr) -{ - int i; - for (i = 0; i < NLGA; i++) - { - if (addr == atomic_load(&last_good_addr[i])) - return 1; - } - return 0; -} - -static void -cache_valid_mem(unw_word_t addr) -{ - int i, victim; - victim = atomic_load(&lga_victim); - unw_word_t zero = 0; - for (i = 0; i < NLGA; i++) { - if (atomic_compare_exchange_strong(&last_good_addr[victim], &zero, addr)) { - return; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - atomic_store(&last_good_addr[victim], addr); - victim = (victim + 1) % NLGA; - atomic_store(&lga_victim, victim); -} -#endif - -static int -validate_mem (unw_word_t addr) -{ - size_t len = unw_page_size; - addr = uwn_page_start(addr); - - if (addr == 0) - return -1; - - if (is_cached_valid_mem(addr)) - return 0; - - if (mem_validate_func ((void *) addr, len) == -1) - return -1; - - cache_valid_mem(addr); - - return 0; -} - static int access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, void *arg) @@ -324,7 +98,7 @@ /* validate address */ const struct cursor *c = (const struct cursor *)arg; if (likely (c != NULL) && unlikely (c->validate) - && unlikely (validate_mem (addr))) { + && unlikely (!unw_address_is_valid (addr, sizeof(unw_word_t)))) { Debug (16, "mem[%016lx] -> invalid\n", addr); return -1; } @@ -380,11 +154,24 @@ return elf_w (get_proc_name) (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return elf_w (get_elf_filename) (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void loongarch64_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNW_CACHE_GLOBAL; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -394,6 +181,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = loongarch64_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/mi/Gaddress_validator.c libunwind-1.8.1/src/mi/Gaddress_validator.c --- libunwind-1.7.2/src/mi/Gaddress_validator.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/mi/Gaddress_validator.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,303 @@ +/* + * Contributed by Stephen M. Webb + * + * This file is part of libunwind, a platform-independent unwind library. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "libunwind_i.h" + + +#ifdef UNW_REMOTE_ONLY +bool +unw_address_is_valid(UNUSED unw_word_t addr, UNUSED size_t len) +{ + Debug(1, "remote-only invoked\n"); + return false; +} + +#else /* !UNW_REMOTE_ONLY */ + +#include + + +static atomic_flag _unw_address_validator_initialized = ATOMIC_FLAG_INIT; +static int _mem_validate_pipe[2] = {-1, -1}; + +#ifdef HAVE_PIPE2 +static int +_do_pipe2 (int pipefd[2]) +{ + return pipe2 (pipefd, O_CLOEXEC | O_NONBLOCK); +} +#else +static void +_set_pipe_flags (int fd) +{ + int fd_flags = fcntl (fd, F_GETFD, 0); + int status_flags = fcntl (fd, F_GETFL, 0); + + fd_flags |= FD_CLOEXEC; + fcntl (fd, F_SETFD, fd_flags); + + status_flags |= O_NONBLOCK; + fcntl (fd, F_SETFL, status_flags); +} + +static int +_do_pipe2 (int pipefd[2]) +{ + if (pipe (pipefd) < 0) + { + return -1; + } + _set_pipe_flags(pipefd[0]); + _set_pipe_flags(pipefd[1]); + return 0; +} +#endif + + +static int +_open_pipe (void) +{ + if (_mem_validate_pipe[0] != -1) + close (_mem_validate_pipe[0]); + if (_mem_validate_pipe[1] != -1) + close (_mem_validate_pipe[1]); + + return _do_pipe2 (_mem_validate_pipe); +} + + +/** + * Test is a memory address is valid by trying to write from it + * @param[in] addr The address to validate + * + * @returns true if the memory address is valid (readable), false otherwise. + * + * This check works by using the address as a (one-byte) buffer in a + * write-to-pipe operation. The write will fail if the memory is not in the + * process's address space and marked as readable. The read will force the page + * to be swapped in if it's not already there. + */ +static bool +_write_validate (unw_word_t addr) +{ + int ret = -1; + ssize_t bytes = 0; + + if (unlikely (!atomic_flag_test_and_set(&_unw_address_validator_initialized))) + { + if (_open_pipe () != 0) + { + return false; + } + } + + do + { + char buf; + bytes = read (_mem_validate_pipe[0], &buf, 1); + } + while ( errno == EINTR ); + + if (!(bytes > 0 || errno == EAGAIN || errno == EWOULDBLOCK)) + { + // re-open closed pipe + if (_open_pipe () != 0) + { + return false; + } + } + + do + { +#ifdef HAVE_SYS_SYSCALL_H + /* use syscall insteadof write() so that ASAN does not complain */ + ret = syscall (SYS_write, _mem_validate_pipe[1], addr, 1); +#else + ret = write (_mem_validate_pipe[1], (void *)addr, 1); +#endif + } + while ( errno == EINTR ); + + return ret > 0; +} + + +/* Cache of already validated addresses */ +enum { NLGA = 4 }; + +#if defined(HAVE___CACHE_PER_THREAD) && HAVE___CACHE_PER_THREAD +// thread-local variant +static _Thread_local unw_word_t last_good_addr[NLGA]; +static _Thread_local int lga_victim; + + +static bool +_is_cached_valid_mem(unw_word_t page_addr) +{ + int i; + for (i = 0; i < NLGA; i++) + { + if (page_addr == last_good_addr[i]) + return true; + } + return false; +} + + +static void +_cache_valid_mem(unw_word_t page_addr) +{ + int i, victim; + victim = lga_victim; + for (i = 0; i < NLGA; i++) + { + if (last_good_addr[victim] == 0) + { + last_good_addr[victim] = page_addr; + return; + } + victim = (victim + 1) % NLGA; + } + + /* All slots full. Evict the victim. */ + last_good_addr[victim] = page_addr; + victim = (victim + 1) % NLGA; + lga_victim = victim; +} + +#else +// global, thread safe variant +static _Atomic unw_word_t last_good_addr[NLGA]; +static _Atomic int lga_victim; + + +static bool +_is_cached_valid_mem(unw_word_t page_addr) +{ + int i; + for (i = 0; i < NLGA; i++) + { + if (page_addr == atomic_load(&last_good_addr[i])) + return true; + } + return false; +} + + +/** + * Adds a known-valid page address to the cache. + * + * This implementation is racy as all get-out but the worst case is that cached + * address get lost, forcing extra unnecessary validation checks. All of the + * atomic operations don't matter because of TOCTOU races. + */ +static void +_cache_valid_mem(unw_word_t page_addr) +{ + unw_word_t zero = 0; + int victim = atomic_load(&lga_victim); + for (int i = 0; i < NLGA; i++) + { + if (atomic_compare_exchange_strong(&last_good_addr[victim], &zero, page_addr)) + { + return; + } + victim = (victim + 1) % NLGA; + } + + /* All slots full. Evict the victim. */ + atomic_store(&last_good_addr[victim], page_addr); + victim = (victim + 1) % NLGA; + atomic_store(&lga_victim, victim); +} +#endif + + +/** + * Validate an address is readable + * @param[in] addr The (starting) address of the memory range to validate + * @param[in] len The size of the memory range to validate in bytes + * + * Validates the memory range from @p addr to (@p addr + @p len - 1) is + * readable. Since the granularity of memory readability is the page, only one + * byte needs to be validated per page for each page starting at @p addr and + * encompassing @p len bytes. Only the first address of each page is checked. + * + * @returns true if the memory is readable, false otherwise. + */ +bool +unw_address_is_valid(unw_word_t addr, size_t len) +{ + if (len == 0) + return true; + + /* + * Find the starting address of the page containing the start of the range. + */ + unw_word_t start_page_addr = unw_page_start (addr); + + /* + * Bounds check on bottom of memory: first page is always deemed inaccessible. + * This is potentially incorrect on an embedded system, especially one running + * on bare metal with no VMM, but the check has always been here and no one + * has complained. + */ + if (start_page_addr == 0) + return false; + + /* + * Bounds check on top of memory. Unsigned wraparound could be hazardous. + */ + if (addr > (UNW_WORD_MAX - len - unw_page_size)) + return false; + + /* + * Find the starting address of the page containing the end of the range. + */ + unw_word_t end_page_addr = unw_page_start (addr + (len - 1)) + unw_page_size; + + /* + * Step through each page and check if the first address in each is readable. + * The first non-readable page encountered means none of them in the given + * range can be considered readable. + */ + for (unw_word_t page_addr = start_page_addr; + page_addr < end_page_addr; + page_addr += unw_page_size) + { + if (!_is_cached_valid_mem(page_addr)) + { + if (!_write_validate (page_addr)) + { + Debug(1, "returning false\n"); + return false; + } + _cache_valid_mem(page_addr); + } + } + + return true; +} + +#endif /* !UNW_REMOTE_ONLY */ diff -Nru libunwind-1.7.2/src/mi/Gdestroy_addr_space.c libunwind-1.8.1/src/mi/Gdestroy_addr_space.c --- libunwind-1.7.2/src/mi/Gdestroy_addr_space.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/mi/Gdestroy_addr_space.c 2024-02-20 19:54:51.000000000 +0000 @@ -26,7 +26,7 @@ #include "libunwind_i.h" void -unw_destroy_addr_space (unw_addr_space_t as) +unw_destroy_addr_space (unw_addr_space_t as UNUSED) { #ifndef UNW_LOCAL_ONLY # if UNW_DEBUG diff -Nru libunwind-1.7.2/src/mi/Gdyn-remote.c libunwind-1.8.1/src/mi/Gdyn-remote.c --- libunwind-1.7.2/src/mi/Gdyn-remote.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/mi/Gdyn-remote.c 2024-02-20 19:54:51.000000000 +0000 @@ -286,8 +286,9 @@ } HIDDEN void -unwi_dyn_remote_put_unwind_info (unw_addr_space_t as, unw_proc_info_t *pi, - void *arg) +unwi_dyn_remote_put_unwind_info (unw_addr_space_t as UNUSED, + unw_proc_info_t *pi, + void *arg UNUSED) { if (!pi->unwind_info) return; diff -Nru libunwind-1.7.2/src/mi/Gfind_dynamic_proc_info.c libunwind-1.8.1/src/mi/Gfind_dynamic_proc_info.c --- libunwind-1.7.2/src/mi/Gfind_dynamic_proc_info.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/mi/Gfind_dynamic_proc_info.c 2024-02-20 19:54:51.000000000 +0000 @@ -63,8 +63,11 @@ #ifdef UNW_LOCAL_ONLY static inline int -remote_find_proc_info (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi, - int need_unwind_info, void *arg) +remote_find_proc_info (unw_addr_space_t as UNUSED, + unw_word_t ip UNUSED, + unw_proc_info_t *pi UNUSED, + int need_unwind_info UNUSED, + void *arg UNUSED) { return -UNW_ENOINFO; } diff -Nru libunwind-1.7.2/src/mi/Gget_elf_filename.c libunwind-1.8.1/src/mi/Gget_elf_filename.c --- libunwind-1.7.2/src/mi/Gget_elf_filename.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/mi/Gget_elf_filename.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,77 @@ +/* libunwind - a platform-independent unwind library +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +#include "libunwind_i.h" +#include "remote.h" + +int +unw_get_elf_filename_by_ip (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + unw_accessors_t *a = unw_get_accessors_int (as); + unw_proc_info_t pi; + int ret; + + buf[0] = '\0'; /* always return a valid string, even if it's empty */ + + ret = unwi_find_dynamic_proc_info (as, ip, &pi, 1, arg); + if (ret == 0) + { + unwi_put_dynamic_unwind_info (as, &pi, arg); + return -UNW_ENOINFO; + } + + if (a->get_elf_filename) + return (*a->get_elf_filename) (as, ip, buf, buf_len, offp, arg); + + return -UNW_ENOINFO; +} + +int +unw_get_elf_filename (unw_cursor_t *cursor, char *buf, size_t buf_len, + unw_word_t *offp) +{ + struct cursor *c = (struct cursor *) cursor; + unw_word_t ip; + int error; + + ip = tdep_get_ip (c); +#if !defined(__ia64__) + if (c->dwarf.use_prev_instr) + { +#if defined(__arm__) + /* On arm, the least bit denotes thumb/arm mode, clear it. */ + ip &= ~(unw_word_t)0x1; +#endif + --ip; + } + +#endif + error = unw_get_elf_filename_by_ip (tdep_get_as (c), ip, buf, buf_len, offp, + tdep_get_as_arg (c)); +#if !defined(__ia64__) + if (c->dwarf.use_prev_instr && offp != NULL && error == 0) + *offp += 1; +#endif + return error; +} diff -Nru libunwind-1.7.2/src/mi/Gget_proc_info_in_range.c libunwind-1.8.1/src/mi/Gget_proc_info_in_range.c --- libunwind-1.7.2/src/mi/Gget_proc_info_in_range.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/mi/Gget_proc_info_in_range.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -/* Copyright (C) 2022 Hewlett-Packard Co. - Contributed by David Mosberger-Tang . -This file is part of libunwind. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include -#include "libunwind_i.h" -#include "dwarf-eh.h" -#include "dwarf_i.h" - -int -unw_get_proc_info_in_range (unw_word_t start_ip, unw_word_t end_ip, - unw_word_t eh_frame_table, unw_word_t eh_frame_table_len, - unw_word_t exidx_frame_table, unw_word_t exidx_frame_table_len, - unw_addr_space_t as, unw_word_t ip, - unw_proc_info_t *pi, int need_unwind_info, - void *arg) -{ - int ret = 0; - - unw_dyn_info_t di; - memset(&di, 0, sizeof(di)); - - di.start_ip = start_ip; - di.end_ip = end_ip; - di.gp = pi->gp; - di.u.rti.name_ptr = 0; - -#if UNW_TARGET_ARM - if (exidx_frame_table != 0) { - di.format = UNW_INFO_FORMAT_ARM_EXIDX; - di.u.rti.table_data = exidx_frame_table; - di.u.rti.table_len = exidx_frame_table_len; - di.u.rti.segbase = 0; - } - else -#endif - if (eh_frame_table != 0) { - unw_accessors_t *a = unw_get_accessors_int (as); - - unw_word_t hdr; - if ((*a->access_mem)(as, eh_frame_table, &hdr, 0, arg) < 0) { - return -UNW_EINVAL; - } - struct dwarf_eh_frame_hdr* exhdr = (struct dwarf_eh_frame_hdr*)&hdr; - - if (exhdr->version != DW_EH_VERSION) { - Debug (1, "Unexpected version %d\n", exhdr->version); - return -UNW_EBADVERSION; - } - unw_word_t addr = eh_frame_table + offsetof(struct dwarf_eh_frame_hdr, eh_frame); - unw_word_t eh_frame_start; - unw_word_t fde_count; - - /* read eh_frame_ptr */ - if ((ret = dwarf_read_encoded_pointer(as, a, &addr, exhdr->eh_frame_ptr_enc, pi, &eh_frame_start, arg)) < 0) { - return ret; - } - - /* read fde_count */ - if ((ret = dwarf_read_encoded_pointer(as, a, &addr, exhdr->fde_count_enc, pi, &fde_count, arg)) < 0) { - return ret; - } - - // If there are no frame table entries - if (fde_count == 0) { - Debug(1, "No frame table entries\n"); - return -UNW_ENOINFO; - } - - if (exhdr->table_enc != (DW_EH_PE_datarel | DW_EH_PE_sdata4)) { - Debug (1, "Table encoding not supported %x\n", exhdr->table_enc); - return -UNW_EINVAL; - } - - di.format = UNW_INFO_FORMAT_REMOTE_TABLE; - di.u.rti.table_data = addr; - di.u.rti.table_len = (fde_count * 8) / sizeof (unw_word_t); - di.u.rti.segbase = eh_frame_table; - } - else { - Debug (1, "No frame table data\n"); - return -UNW_ENOINFO; - } - - ret = tdep_search_unwind_table(as, ip, &di, pi, need_unwind_info, arg); - if (ret < 0) { - return ret; - } - - if (ip < pi->start_ip || ip >= pi->end_ip) { - Debug (1, "ip %p not in range start_ip %p end_ip %p\n", ip, pi->start_ip, pi->end_ip); - return -UNW_ENOINFO; - } - return UNW_ESUCCESS; -} diff -Nru libunwind-1.7.2/src/mi/Gset_iterate_phdr_function.c libunwind-1.8.1/src/mi/Gset_iterate_phdr_function.c --- libunwind-1.7.2/src/mi/Gset_iterate_phdr_function.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/mi/Gset_iterate_phdr_function.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,23 @@ +#include "libunwind_i.h" + +//! Set an alternative function to use in place of dl_iterate_phdr. +/*! Suggested use is to specify an async-signal safe implementation. + * If not set (or set to NULL) the system dl_iterate_phdr will + * be used. */ +void +unw_set_iterate_phdr_function (unw_addr_space_t as, unw_iterate_phdr_func_t function) +{ + if (!tdep_init_done) + tdep_init (); + +#ifndef UNW_REMOTE_ONLY + if (function) + as->iterate_phdr_function = function; + else +# if defined(HAVE_DL_ITERATE_PHDR) + as->iterate_phdr_function = dl_iterate_phdr; +# else + as->iterate_phdr_function = NULL; +# endif +#endif +} diff -Nru libunwind-1.7.2/src/mi/Laddress_validator.c libunwind-1.8.1/src/mi/Laddress_validator.c --- libunwind-1.7.2/src/mi/Laddress_validator.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/mi/Laddress_validator.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,5 @@ +#define UNW_LOCAL_ONLY +#include +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gaddress_validator.c" +#endif diff -Nru libunwind-1.7.2/src/mi/Lget_elf_filename.c libunwind-1.8.1/src/mi/Lget_elf_filename.c --- libunwind-1.7.2/src/mi/Lget_elf_filename.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/mi/Lget_elf_filename.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,5 @@ +#define UNW_LOCAL_ONLY +#include +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gget_elf_filename.c" +#endif diff -Nru libunwind-1.7.2/src/mi/Lget_proc_info_in_range.c libunwind-1.8.1/src/mi/Lget_proc_info_in_range.c --- libunwind-1.7.2/src/mi/Lget_proc_info_in_range.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/mi/Lget_proc_info_in_range.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gget_proc_info_in_range.c" -#endif diff -Nru libunwind-1.7.2/src/mi/Lset_iterate_phdr_function.c libunwind-1.8.1/src/mi/Lset_iterate_phdr_function.c --- libunwind-1.7.2/src/mi/Lset_iterate_phdr_function.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/mi/Lset_iterate_phdr_function.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,5 @@ +#define UNW_LOCAL_ONLY +#include +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gset_iterate_phdr_function.c" +#endif diff -Nru libunwind-1.7.2/src/mi/flush_cache.c libunwind-1.8.1/src/mi/flush_cache.c --- libunwind-1.7.2/src/mi/flush_cache.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/mi/flush_cache.c 2024-02-20 19:54:51.000000000 +0000 @@ -27,7 +27,7 @@ #include void -unw_flush_cache (unw_addr_space_t as, unw_word_t lo, unw_word_t hi) +unw_flush_cache (unw_addr_space_t as, unw_word_t lo UNUSED, unw_word_t hi UNUSED) { #if !UNW_TARGET_IA64 struct unw_debug_frame_list *w = as->debug_frames; @@ -37,10 +37,10 @@ struct unw_debug_frame_list *n = w->next; if (w->index) - munmap (w->index, w->index_size); + mi_munmap (w->index, w->index_size); - munmap (w->debug_frame, w->debug_frame_size); - munmap (w, sizeof (*w)); + mi_munmap (w->debug_frame, w->debug_frame_size); + mi_munmap (w, sizeof (*w)); w = n; } as->debug_frames = NULL; diff -Nru libunwind-1.7.2/src/mi/mempool.c libunwind-1.8.1/src/mi/mempool.c --- libunwind-1.7.2/src/mi/mempool.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/mi/mempool.c 2024-02-20 19:54:51.000000000 +0000 @@ -43,7 +43,6 @@ static alignas(MAX_ALIGN) char sos_memory[SOS_MEMORY_SIZE]; static _Atomic size_t sos_memory_freepos = 0; -static size_t pg_size; HIDDEN void * sos_alloc (size_t size) @@ -94,7 +93,7 @@ GET_MEMORY (mem, size); if (!mem) { - size = UNW_ALIGN(pool->obj_size, pg_size); + size = UNW_ALIGN(pool->obj_size, unw_page_size); GET_MEMORY (mem, size); if (!mem) { @@ -109,9 +108,6 @@ HIDDEN void mempool_init (struct mempool *pool, size_t obj_size, size_t reserve) { - if (pg_size == 0) - pg_size = getpagesize (); - memset (pool, 0, sizeof (*pool)); lock_init (&pool->lock); @@ -121,14 +117,14 @@ if (!reserve) { - reserve = pg_size / obj_size / 4; + reserve = unw_page_size / obj_size / 4; if (!reserve) reserve = 16; } pool->obj_size = obj_size; pool->reserve = reserve; - pool->chunk_size = UNW_ALIGN(2*reserve*obj_size, pg_size); + pool->chunk_size = UNW_ALIGN(2*reserve*obj_size, unw_page_size); expand (pool); } diff -Nru libunwind-1.7.2/src/mips/Ginit.c libunwind-1.8.1/src/mips/Ginit.c --- libunwind-1.7.2/src/mips/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/mips/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -179,6 +179,15 @@ return elf_w (get_proc_name) (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + + return elf_w (get_elf_filename) (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void mips_local_addr_space_init (void) { @@ -194,6 +203,11 @@ # error Unsupported ABI #endif local_addr_space.addr_size = sizeof (void *); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -203,6 +217,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = NULL; /* mips_local_resume? FIXME! */ local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/nto/unw_nto_access_fpreg.c libunwind-1.8.1/src/nto/unw_nto_access_fpreg.c --- libunwind-1.7.2/src/nto/unw_nto_access_fpreg.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_access_fpreg.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,43 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "libunwind-nto.h" +#include "unw_nto_internal.h" + +#include + + +int unw_nto_access_fpreg (unw_addr_space_t as, + unw_regnum_t regnum, + unw_fpreg_t *valp, int write, + void *arg) +{ + if (!write) + { + memset (valp, 0, sizeof (*valp)); + } + + return 0; +} + diff -Nru libunwind-1.7.2/src/nto/unw_nto_access_mem.c libunwind-1.8.1/src/nto/unw_nto_access_mem.c --- libunwind-1.7.2/src/nto/unw_nto_access_mem.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_access_mem.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,79 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "unw_nto_internal.h" +#include "os-qnx.h" + +#include +#include +#include +#include + + +/** + * Read/write data from/to the target address space + * + * @todo save opened fd in unw_nto_internal_t + */ +int unw_nto_access_mem (unw_addr_space_t as, + unw_word_t addr, + unw_word_t *valp, + int write, + void *arg) +{ + int ret = -UNW_ENOINFO; + unw_nto_internal_t *uni = (unw_nto_internal_t *)arg; + int as_fd = unw_nto_procfs_open_as (uni->pid); + + if (as_fd < 0) + { + Debug (0, "error %d opening as file: %s\n", errno, strerror (errno)); + return ret; + } + + if (lseek (as_fd, (off_t)addr, SEEK_SET) == -1) + { + Debug (0, "error %d in lseek(%" PRIxPTR "): %s\n", errno, addr, strerror (errno)); + close (as_fd); + return ret; + } + + if (!write) + { + ssize_t count = read (as_fd, valp, sizeof (*valp)); + + if (count != sizeof (*valp)) + { + Debug (0, "error %d in read(%zu): %s\n", errno, sizeof (*valp), strerror (errno)); + close (as_fd); + return ret; + } + + ret = 0; + } + + close (as_fd); + return ret; +} + diff -Nru libunwind-1.7.2/src/nto/unw_nto_access_reg.c libunwind-1.8.1/src/nto/unw_nto_access_reg.c --- libunwind-1.7.2/src/nto/unw_nto_access_reg.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_access_reg.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,202 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "unw_nto_internal.h" +#include "os-qnx.h" + +#include +#include +#include +#include +#include +#include + + +int unw_nto_access_reg (unw_addr_space_t as, + unw_regnum_t regnum, + unw_word_t *valp, + int write, + void *arg) +{ + unw_nto_internal_t *uni = (unw_nto_internal_t *)arg; + int ret = -UNW_EUNSPEC; + procfs_greg greg; + int ctl_fd = unw_nto_procfs_open_ctl (uni->pid); + + if (ctl_fd < 0) + { + Debug (0, "error %d opening ctl file: %s", errno, strerror (errno)); + return ret; + } + + int err = devctl (ctl_fd, DCMD_PROC_CURTHREAD, & (uni->tid), sizeof (uni->tid), 0); + + if (err != EOK) + { + Debug (0, "error %d in devctl(DCMD_PROC_CURTHREAD): %s", err, strerror (err)); + close (ctl_fd); + return ret; + } + + if (write) + { + Debug (0, "write not supported\n"); + } + + else + { + err = devctl (ctl_fd, DCMD_PROC_GETGREG, &greg, sizeof (greg), NULL); + + if (err != EOK) + { + Debug (0, "error %d in devctl(DCMD_PROC_GETGREG): %s", err, strerror (err)); + close (ctl_fd); + return ret; + } + + switch (regnum) + { + case UNW_REG_IP: +#if defined(__X86_64__) + *valp = GET_REGIP (&greg.x86_64); +#elif defined(__ARM__) + *valp = GET_REGIP (&greg.arm); +#elif defined(__aarch64__) + *valp = greg.aarch64.gpr[AARCH64_REG_X30]; +#else +# error Unsupported architecture +#endif + break; + + case UNW_REG_SP: +#if defined(__X86_64__) + *valp = GET_REGSP (&greg.x86_64); +#elif defined(__ARM__) + *valp = GET_REGSP (&greg.arm); +#elif defined(__aarch64__) + *valp = GET_REGSP (&greg.aarch64); +#else +# error Unsupported architecture +#endif + break; +#if defined(__aarch64__) + + case UNW_AARCH64_PC: + *valp = GET_REGIP (&greg.aarch64); + break; + + case UNW_AARCH64_X29: + *valp = greg.aarch64.gpr[AARCH64_REG_X29]; + break; +#endif +#if defined(__X86_64__) + + case UNW_X86_64_RAX: + Debug (15, "request for UNW_X86_64_RAX (%d)\n", UNW_X86_64_RAX); + *valp = greg.x86_64.rax; + break; + + case UNW_X86_64_RDX: + Debug (15, "request for UNW_X86_64_RDX (%d)\n", UNW_X86_64_RDX); + *valp = greg.x86_64.rdx; + break; + + case UNW_X86_64_RCX: + Debug (15, "request for UNW_X86_64_RCX (%d)\n", UNW_X86_64_RCX); + *valp = greg.x86_64.rcx; + break; + + case UNW_X86_64_RBX: + Debug (15, "request for UNW_X86_64_RBX (%d)\n", UNW_X86_64_RBX); + *valp = greg.x86_64.rbx; + break; + + case UNW_X86_64_RSI: + Debug (15, "request for UNW_X86_64_RSI (%d)\n", UNW_X86_64_RSI); + *valp = greg.x86_64.rsi; + break; + + case UNW_X86_64_RDI: + Debug (15, "request for UNW_X86_64_RDI (%d)\n", UNW_X86_64_RDI); + *valp = greg.x86_64.rdi; + break; + + case UNW_X86_64_RBP: + Debug (15, "request for UNW_X86_64_RBP (%d)\n", UNW_X86_64_RBP); + *valp = greg.x86_64.rbp; + break; + + case UNW_X86_64_R8: + Debug (15, "request for UNW_X86_64_R8 (%d)\n", UNW_X86_64_R8); + *valp = greg.x86_64.r8; + break; + + case UNW_X86_64_R9: + Debug (15, "request for UNW_X86_64_R9 (%d)\n", UNW_X86_64_R9); + *valp = greg.x86_64.r9; + break; + + case UNW_X86_64_R10: + Debug (15, "request for UNW_X86_64_R10 (%d)\n", UNW_X86_64_R10); + *valp = greg.x86_64.r10; + break; + + case UNW_X86_64_R11: + Debug (15, "request for UNW_X86_64_R11 (%d)\n", UNW_X86_64_R11); + *valp = greg.x86_64.r11; + break; + + case UNW_X86_64_R12: + Debug (15, "request for UNW_X86_64_R12 (%d)\n", UNW_X86_64_R12); + *valp = greg.x86_64.r12; + break; + + case UNW_X86_64_R13: + Debug (15, "request for UNW_X86_64_R13 (%d)\n", UNW_X86_64_R13); + *valp = greg.x86_64.r13; + break; + + case UNW_X86_64_R14: + Debug (15, "request for UNW_X86_64_R14 (%d)\n", UNW_X86_64_R14); + *valp = greg.x86_64.r14; + break; + + case UNW_X86_64_R15: + Debug (15, "request for UNW_X86_64_R15 (%d)\n", UNW_X86_64_R15); + *valp = greg.x86_64.r15; + break; +#endif + + default: + Debug (0, "as=%p, regnum=%d, valp=%p, write=%d uni=%p\n", as, regnum, valp, write, uni); + break; + } + + ret = 0; + } + + close (ctl_fd); + return ret; +} + diff -Nru libunwind-1.7.2/src/nto/unw_nto_accessors.c libunwind-1.8.1/src/nto/unw_nto_accessors.c --- libunwind-1.7.2/src/nto/unw_nto_accessors.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_accessors.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * Copyright 2020, 2022-2023 QNX Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "libunwind-nto.h" + + +/** + * Instance of the NTO accessor struct. + */ +unw_accessors_t unw_nto_accessors = +{ + .find_proc_info = unw_nto_find_proc_info, + .put_unwind_info = unw_nto_put_unwind_info, + .get_dyn_info_list_addr = unw_nto_get_dyn_info_list_addr, + .access_mem = unw_nto_access_mem, + .access_reg = unw_nto_access_reg, + .access_fpreg = unw_nto_access_fpreg, + .resume = unw_nto_resume, + .get_proc_name = unw_nto_get_proc_name, + .get_proc_ip_range = unw_nto_get_proc_ip_range, + .get_elf_filename = unw_nto_get_elf_filename, +}; + diff -Nru libunwind-1.7.2/src/nto/unw_nto_create.c libunwind-1.8.1/src/nto/unw_nto_create.c --- libunwind-1.7.2/src/nto/unw_nto_create.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_create.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,102 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "os-qnx.h" +#include "unw_nto_internal.h" + +#include +#include +#include +#include +#include +#include +#include + + +/** + * Hold the target thread to avoid race conditions. + * @param[in] ctl_fd File descriptor for /proc process ctl file + * @param[in] tid Identifies thread to hold + * + * @returns 0 on error, otherwise on success. + */ +static int _hold_thread (int ctl_fd, pthread_t tid) +{ + procfs_threadctl tctl = + { + .cmd = _NTO_TCTL_ONE_THREAD_HOLD, + .tid = tid + }; + memcpy (tctl.data, & (tid), sizeof (tid)); + int err = devctl (ctl_fd, DCMD_PROC_THREADCTL, &tctl, sizeof (tctl), NULL); + + if (err != EOK) + { + Debug (0, "error %d in devctl(DCMD_PROC_THREADCTL): %s\n", err, strerror (err)); + } + + return err == EOK; +} + + +void *unw_nto_create (pid_t pid, pthread_t tid) +{ + unw_nto_internal_t *uni = calloc (1, sizeof (unw_nto_internal_t)); + if (uni == NULL) + { + return NULL; + } + + mi_init (); + + uni->pid = pid; + uni->tid = tid; + uni->edi.di_cache.format = -1; + uni->edi.di_debug.format = -1; + int ctl_fd = unw_nto_procfs_open_ctl (pid); + + if (ctl_fd < 0) + { + Debug (0, "error %d opening procfs ctl file for pid %d: %s\n", + errno, pid, strerror (errno)); + unw_nto_destroy (uni); + uni = NULL; + return uni; + } + + if (!_hold_thread (ctl_fd, tid)) + { + close (ctl_fd); + unw_nto_destroy (uni); + uni = NULL; + } + + else + { + close (ctl_fd); + } + + return uni; +} + diff -Nru libunwind-1.7.2/src/nto/unw_nto_destroy.c libunwind-1.8.1/src/nto/unw_nto_destroy.c --- libunwind-1.7.2/src/nto/unw_nto_destroy.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_destroy.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,81 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "unw_nto_internal.h" +#include "os-qnx.h" + +#include +#include +#include +#include +#include +#include + + +/** + * Continues a (held) thread. + * @param[in] ctl_fd File descriptor for /proc process ctl file + * @param[in] tid Identifies thread to continue + * + * @returns 0 on error, otherwise on success. + */ +static void _cont_thread (int ctl_fd, pthread_t tid) +{ + procfs_threadctl tctl = + { + .cmd = _NTO_TCTL_ONE_THREAD_CONT, + .tid = tid + }; + memcpy (tctl.data, & (tid), sizeof (tid)); + int ret = devctl (ctl_fd, DCMD_PROC_THREADCTL, &tctl, sizeof (tctl), NULL); + + if (ret != EOK) + { + Debug (0, "error %d continuing thread %d: %s\n", + ret, tid, strerror (ret)); + } +} + + +/** + * Tears down an NTO unwind context. + */ +void unw_nto_destroy (void *arg) +{ + unw_nto_internal_t *uni = (unw_nto_internal_t *)arg; + int ctl_fd = unw_nto_procfs_open_ctl (uni->pid); + + if (ctl_fd < 0) + { + Debug (0, "error %d opening procfs ctl file for pid %d: %s\n", + errno, uni->pid, strerror (errno)); + free (uni); + return; + } + + _cont_thread (ctl_fd, uni->tid); + close (ctl_fd); + free (uni); +} + diff -Nru libunwind-1.7.2/src/nto/unw_nto_elf.c libunwind-1.8.1/src/nto/unw_nto_elf.c --- libunwind-1.7.2/src/nto/unw_nto_elf.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_elf.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,33 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * We need to get a separate copy of the ELF-code into libunwind-nto since it + * cannot (and must not) have any ELF dependencies on libunwind. + */ + +#include "libunwind_i.h" /* get ELFCLASS defined */ +#include "../elfxx.c" + diff -Nru libunwind-1.7.2/src/nto/unw_nto_find_proc_info.c libunwind-1.8.1/src/nto/unw_nto_find_proc_info.c --- libunwind-1.7.2/src/nto/unw_nto_find_proc_info.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_find_proc_info.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,100 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "unw_nto_internal.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/** + * Locate info needed to unwind a particular procedure. + * @param[in] as The address space object + * @param[in] ip Address of an instruction inside the procedure. + * @param[out] pi Pointer to where the information should be written. + * @param[in] need_unwind_info Flags is certain fields are mandatory i *pi: + * - format + * - unwind_info_size + * - unwind_info + * @param[in] arg The NTO unwind context. + * + * @returns 0 on normal, successful completion and @c -UNW_ESTOPUNWIND to signal + * the end of the frame-chain. Returns @c -UNW_ENOINFO otherwise indicating an + * error. + * + * This function is part of the public API of the libunwind API library and is a + * callback passed to @c unw_create_addr_space() through the @c unw_accessors_t + * object. + */ +int unw_nto_find_proc_info (unw_addr_space_t as, + unw_word_t ip, + unw_proc_info_t *pi, + int need_unwind_info, + void *arg) +{ + unw_nto_internal_t *uni = (unw_nto_internal_t *)arg; + int ret = -UNW_ENOINFO; + unsigned long segbase = 0; + unsigned long mapoff = 0; + char path[PATH_MAX]; + invalidate_edi (&uni->edi); + ret = tdep_get_elf_image (&uni->edi.ei, + uni->pid, + ip, + &segbase, + &mapoff, + path, + sizeof (path)); + + if (ret >= 0) + { + if (tdep_find_unwind_table (&uni->edi, as, path, segbase, mapoff, ip) >= 0) + { + if (uni->edi.di_cache.format != -1) + { + ret = tdep_search_unwind_table (as, ip, &uni->edi.di_cache, + pi, need_unwind_info, uni); + } + + if (ret == -UNW_ENOINFO && uni->edi.di_debug.format != -1) + { + ret = tdep_search_unwind_table (as, ip, &uni->edi.di_debug, pi, + need_unwind_info, uni); + } + } + } + + return ret; +} + diff -Nru libunwind-1.7.2/src/nto/unw_nto_get_dyn_info_list_addr.c libunwind-1.8.1/src/nto/unw_nto_get_dyn_info_list_addr.c --- libunwind-1.7.2/src/nto/unw_nto_get_dyn_info_list_addr.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_get_dyn_info_list_addr.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,38 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "unw_nto_internal.h" + + +/** + * Get the dynamic unwind info registration list. This implementation isn't + * supporting dynamically-generated code so this function does nothing. + */ +int unw_nto_get_dyn_info_list_addr (unw_addr_space_t as, + unw_word_t *dilap, + void *arg) +{ + return -UNW_ENOINFO; +} + diff -Nru libunwind-1.7.2/src/nto/unw_nto_get_elf_filename.c libunwind-1.8.1/src/nto/unw_nto_get_elf_filename.c --- libunwind-1.7.2/src/nto/unw_nto_get_elf_filename.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_get_elf_filename.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,51 @@ +/* + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "unw_nto_internal.h" + +#include +#include + +int unw_nto_get_elf_filename (unw_addr_space_t as, + unw_word_t ip, + char *buf, + size_t buf_len, + unw_word_t *offp, + void *arg) +{ + unw_nto_internal_t *uni = (unw_nto_internal_t *)arg; + char path[PATH_MAX] = {0}; + size_t path_len = sizeof (path); + int ret = -UNW_ENOINFO; +#if UNW_ELF_CLASS == UNW_ELFCLASS64 + ret = _Uelf64_get_elf_filename (as, uni->pid, ip, path, path_len, offp); +#elif UNW_ELF_CLASS == UNW_ELFCLASS32 + ret = _Uelf32_get_elf_filename (as, uni->pid, ip, path, path_len, offp); +#else +# error no valid ELF class defined +#endif + + if (ret >= 0) + snprintf (buf, buf_len, "%s", path); + + return ret; +} diff -Nru libunwind-1.7.2/src/nto/unw_nto_get_proc_name.c libunwind-1.8.1/src/nto/unw_nto_get_proc_name.c --- libunwind-1.7.2/src/nto/unw_nto_get_proc_name.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_get_proc_name.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,88 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "unw_nto_internal.h" + +#include +#include + + +/** + * Callback to obtain the name of the procedure in the current frame and the + * relative offset of the IP within that procedure. + */ +int unw_nto_get_proc_name (unw_addr_space_t as, + unw_word_t ip, + char *buf, + size_t buf_len, + unw_word_t *offp, + void *arg) +{ + unw_nto_internal_t *uni = (unw_nto_internal_t *)arg; + char symbol[PATH_MAX] = {0}; + size_t symbol_len = sizeof (symbol); + char path[PATH_MAX] = {0}; + size_t path_len = sizeof (path); + int ret = -UNW_ENOINFO; +#if UNW_ELF_CLASS == UNW_ELFCLASS64 + ret = _Uelf64_get_proc_name (as, uni->pid, ip, symbol, symbol_len, offp); +#elif UNW_ELF_CLASS == UNW_ELFCLASS32 + ret = _Uelf32_get_proc_name (as, uni->pid, ip, symbol, symbol_len, offp); +#else +# error no valid ELF class defined +#endif + + if (ret >= 0) + { + /* snprintf(buf, buf_len, "%s:%s", path, symbol); */ + snprintf (buf, buf_len, "%s", symbol); + } + + else if (path[0] != '\0') + { + snprintf (buf, buf_len, "%s:?????", path); + } + + return ret; +} + +int unw_nto_get_proc_ip_range (unw_addr_space_t as, + unw_word_t ip, + unw_word_t *start, + unw_word_t *end, + void *arg) +{ + unw_nto_internal_t *uni = (unw_nto_internal_t *)arg; + int ret = -UNW_ENOINFO; + +#if UNW_ELF_CLASS == UNW_ELFCLASS64 + ret = _Uelf64_get_proc_ip_range (as, uni->pid, ip, start, end); +#elif UNW_ELF_CLASS == UNW_ELFCLASS32 + ret = _Uelf32_get_proc_ip_range (as, uni->pid, ip, start, end); +#else +# error no valid ELF class defined +#endif + + return ret; +} diff -Nru libunwind-1.7.2/src/nto/unw_nto_internal.h libunwind-1.8.1/src/nto/unw_nto_internal.h --- libunwind-1.7.2/src/nto/unw_nto_internal.h 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_internal.h 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#ifndef UNW_NTO_INTERNAL_H +#define UNW_NTO_INTERNAL_H + +#include "libunwind-nto.h" +#include "libunwind_i.h" + + +/** + * Internal unw-nto context. + */ +typedef struct unw_nto_internal +{ + pid_t pid; /* process ID of the thread being unwound */ + pthread_t tid; /* thread ID of the thread being unwound */ + struct elf_dyn_info edi; /* ELF info for current frame */ +} unw_nto_internal_t; + + +#endif /* UNW_NTO_INTERNAL_H */ + diff -Nru libunwind-1.7.2/src/nto/unw_nto_put_unwind_info.c libunwind-1.8.1/src/nto/unw_nto_put_unwind_info.c --- libunwind-1.7.2/src/nto/unw_nto_put_unwind_info.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_put_unwind_info.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,37 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "libunwind-nto.h" +#include "unw_nto_internal.h" + + +/** + * @todo unsupported + */ +void unw_nto_put_unwind_info (unw_addr_space_t as, + unw_proc_info_t *pi, + void *arg) +{ + Debug (2, "as=%p, pi=%p, arg=%p\n", as, pi, arg); +} diff -Nru libunwind-1.7.2/src/nto/unw_nto_resume.c libunwind-1.8.1/src/nto/unw_nto_resume.c --- libunwind-1.7.2/src/nto/unw_nto_resume.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/nto/unw_nto_resume.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,39 @@ +/* + * Copyright 2020, 2022 Blackberry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "libunwind-nto.h" +#include "unw_nto_internal.h" + + +/** + * @todo unsupported + */ +int unw_nto_resume (unw_addr_space_t as, + unw_cursor_t *reg, + void *arg) +{ + Debug (2, "as=%p, reg=%p, arg=%p\n", as, reg, arg); + return 0; +} + diff -Nru libunwind-1.7.2/src/os-freebsd.c libunwind-1.8.1/src/os-freebsd.c --- libunwind-1.7.2/src/os-freebsd.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/os-freebsd.c 2024-02-21 13:39:50.000000000 +0000 @@ -37,7 +37,7 @@ { void *res; - res = mmap(NULL, sz, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); + res = mi_mmap(NULL, sz, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); if (res == MAP_FAILED) return (NULL); return (res); @@ -46,7 +46,7 @@ static void free_mem(void *ptr, size_t sz) { - munmap(ptr, sz); + mi_munmap(ptr, sz); } static int @@ -136,8 +136,12 @@ if (path) { strncpy(path, kv->kve_path, pathlen); + path[pathlen - 1] = '\0'; } - ret = elf_map_image (ei, kv->kve_path); + if (ei) + ret = elf_map_image (ei, kv->kve_path); + else + ret = strlen (kv->kve_path) >= pathlen ? -UNW_ENOMEM : UNW_ESUCCESS; break; } free_mem(buf, len1); diff -Nru libunwind-1.7.2/src/os-hpux.c libunwind-1.8.1/src/os-hpux.c --- libunwind-1.7.2/src/os-hpux.c 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/src/os-hpux.c 2024-02-20 19:54:51.000000000 +0000 @@ -38,6 +38,7 @@ { struct load_module_desc lmd; const char *path2; + int ret; if (pid != getpid ()) { @@ -63,7 +64,11 @@ } Debug(1, "segbase=%lx, mapoff=%lx, path=%s\n", *segbase, *mapoff, path); - return elf_map_image (ei, path); + if (ei) + ret = elf_map_image (ei, path); + else + ret = strlen (path2) >= path ? -UNW_ENOMEM : UNW_ESUCCESS; + return ret; } #ifndef UNW_REMOTE_ONLY diff -Nru libunwind-1.7.2/src/os-linux.c libunwind-1.8.1/src/os-linux.c --- libunwind-1.7.2/src/os-linux.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/os-linux.c 2024-02-20 19:54:51.000000000 +0000 @@ -33,20 +33,17 @@ #include "libunwind_i.h" #include "os-linux.h" -#define FULL_PATH_BUFF_SZ 1024 - int tdep_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip, unsigned long *segbase, unsigned long *mapoff, char *path, size_t pathlen) { struct map_iterator mi; - int found = 0, rc; + int found = 0, rc = UNW_ESUCCESS; unsigned long hi; char root[sizeof ("/proc/0123456789/root")], *cp; char *full_path; struct stat st; - char full_path_buff[FULL_PATH_BUFF_SZ]; if (maps_init (&mi, pid) < 0) return -1; @@ -64,6 +61,18 @@ return -1; } + // get path only, no need to map elf image + if (!ei && path) + { + strncpy(path, mi.path, pathlen); + path[pathlen - 1] = '\0'; + if (strlen(mi.path) >= pathlen) + rc = -UNW_ENOMEM; + + maps_close (&mi); + return rc; + } + full_path = mi.path; /* Get process root */ @@ -72,34 +81,30 @@ assert (cp + 6 < root + sizeof (root)); memcpy (cp, "/root", 6); + size_t _len = strlen (mi.path) + 1; if (!stat(root, &st) && S_ISDIR(st.st_mode)) + _len += strlen (root); + else + root[0] = '\0'; + + full_path = path; + if(!path) + full_path = (char*) malloc (_len); + else if(_len >= pathlen) // passed buffer is too small, fail { - unsigned long _len = strlen(root) + strlen(mi.path) + 1; - if(_len >= FULL_PATH_BUFF_SZ) - { - full_path = (char*) malloc(_len); - } - else - { - snprintf(full_path_buff, FULL_PATH_BUFF_SZ, "%s%s", root, mi.path); - full_path = &full_path_buff[0]; - } - if (!full_path) - full_path = mi.path; - else - { - strcpy (full_path, root); - strcat (full_path, mi.path); - } + maps_close (&mi); + return -1; } - if (path) - { - strncpy(path, full_path, pathlen); - } + strcpy (full_path, root); + strcat (full_path, mi.path); + + if (stat(full_path, &st) || !S_ISREG(st.st_mode)) + strcpy(full_path, mi.path); + rc = elf_map_image (ei, full_path); - if (full_path && full_path != mi.path && full_path != &full_path_buff[0]) + if (!path) free (full_path); maps_close (&mi); diff -Nru libunwind-1.7.2/src/os-linux.h libunwind-1.8.1/src/os-linux.h --- libunwind-1.7.2/src/os-linux.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/os-linux.h 2024-02-20 19:54:51.000000000 +0000 @@ -77,9 +77,8 @@ { /* Try to allocate a page-sized buffer. */ mi->buf_size = getpagesize (); - cp = mmap (NULL, mi->buf_size, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (cp == MAP_FAILED) + GET_MEMORY (cp, mi->buf_size); + if (!cp) { close(mi->fd); mi->fd = -1; @@ -120,10 +119,10 @@ digit = *cp; if ((digit - '0') <= 9) digit -= '0'; - else if ((digit - 'a') < 6) - digit -= 'a' - 10; else if ((digit - 'A') < 6) digit -= 'A' - 10; + else if ((digit - 'a') < 6) + digit -= 'a' - 10; else break; val = (val << 4) | digit; @@ -306,7 +305,7 @@ mi->fd = -1; if (mi->buf) { - munmap (mi->buf_end - mi->buf_size, mi->buf_size); + mi_munmap (mi->buf_end - mi->buf_size, mi->buf_size); mi->buf = mi->buf_end = NULL; } } diff -Nru libunwind-1.7.2/src/os-qnx.c libunwind-1.8.1/src/os-qnx.c --- libunwind-1.7.2/src/os-qnx.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/os-qnx.c 2024-02-20 19:54:51.000000000 +0000 @@ -1,6 +1,7 @@ /* libunwind - a platform-independent unwind library Copyright (C) 2013 Garmin International Contributed by Matt Fischer + Copyright (c) 2022-2023 BlackBerry Limited. All rights reserved. This file is part of libunwind. @@ -23,85 +24,308 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include "libunwind_i.h" +#include "os-qnx.h" + +#include +#include #include +#include +#include +#include -#include "libunwind_i.h" + +#if __PTR_BITS__ == 32 +typedef Elf32_Ehdr elf_ehdr_t; +typedef Elf32_Phdr elf_phdr_t; +#else +typedef Elf64_Ehdr elf_ehdr_t; +typedef Elf64_Phdr elf_phdr_t; +#endif struct cb_info { - unw_word_t ip; - unsigned long segbase; - unsigned long offset; - const char *path; + unw_word_t ip; + unsigned long segbase; + unsigned long offset; + const char *path; }; -static int callback(const struct dl_phdr_info *info, size_t size, void *data) +static int +phdr_callback(const struct dl_phdr_info *info, size_t size, void *data) { int i; struct cb_info *cbi = (struct cb_info*)data; - for(i=0; idlpi_phnum; i++) { - int segbase = info->dlpi_addr + info->dlpi_phdr[i].p_vaddr; - if(cbi->ip >= segbase && cbi->ip < segbase + info->dlpi_phdr[i].p_memsz) - { - cbi->path = info->dlpi_name; - cbi->offset = info->dlpi_phdr[i].p_offset; - cbi->segbase = segbase; - return 1; + for(i=0; idlpi_phnum; i++) + { + unw_word_t segbase = info->dlpi_addr + info->dlpi_phdr[i].p_vaddr; + if(cbi->ip >= segbase && cbi->ip < segbase + info->dlpi_phdr[i].p_memsz) + { + cbi->path = info->dlpi_name; + cbi->offset = info->dlpi_phdr[i].p_offset; + cbi->segbase = segbase; + return 1; + } } - } return 0; } -int -tdep_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip, - unsigned long *segbase, unsigned long *mapoff, - char *path, size_t pathlen) -{ - struct cb_info cbi; - int ret = -1; - cbi.ip = ip; - cbi.segbase = 0; - cbi.offset = 0; - cbi.path = NULL; - - /* QNX's support for accessing symbol maps is severely broken. There is - a devctl() call that can be made on a proc node (DCMD_PROC_MAPDEBUG) - which returns information similar to Linux's /proc//maps - node, however the filename that is returned by this call is not an - absolute path, and there is no foolproof way to map the filename - back to the file that it came from. - - Therefore, the normal approach for implementing this function, - which works equally well for both local and remote unwinding, - will not work here. The only type of image lookup which works - reliably is locally, using dl_iterate_phdr(). However, the only - time that this function is required to look up a remote image is for - ptrace support, which doesn't work on QNX anyway. Local unwinding, - which is the main case that makes use of this function, will work - fine with dl_iterate_phdr(). Therefore, in lieu of any better - platform support for remote image lookup, this function has just - been implemented in terms of dl_iterate_phdr(). - */ - if (pid != getpid()) - { - /* Return an error if an attempt is made to perform remote image lookup */ - return -1; - } +/** + * Gets the number of mapped segments loaded in the target process image. + * + * @param[in] ctl_fd file descriptor for the process control file + * + * @returns the number of mapped segments loaded in the process image. + */ +static int +_get_map_count(int ctl_fd) +{ + int count = 0; + int err = devctl(ctl_fd, DCMD_PROC_MAPINFO, NULL, 0, &count); + if (err != EOK) + { + fprintf(stderr, "error %d in devctl(DCMD_PROC_MAPINFO): %s\n", err, strerror(err)); + return 0; + } + + return count; +} + + +/** + * Read some bytes from the procfs address space file for the target process. + * + * @param[in] as_fd file descriptor of te opened address space file + * @param[in] pos offset within the file to start the read + * @param[in] sz number of bytes to read + * @param[out] buf destination in which to read the bytes + * + * @returns the number of bytes read. On failure to read, a byte count of 0 is + * returned and errno is set appropriately. + */ +static int +_read_procfs_as(int as_fd, + uintptr_t pos, + size_t sz, + void *buf) +{ + if (lseek(as_fd, (off_t)pos, SEEK_SET) == -1) + { + fprintf(stderr, "error %d in lseek(%" PRIxPTR "): %s\n", errno, pos, strerror(errno)); + return 0; + } + + size_t bytes_read = 0; + for (size_t readn = sz; readn > 0; ) + { + int ret = read(as_fd, buf + bytes_read, readn); + if (ret <= 0) + { + if (errno == EINTR || errno == EAGAIN) + { + continue; + } + else if (ret == 0) + { + errno = EFAULT; + } + return 0; + } + bytes_read += ret; + readn -= ret; + } + + return sz; +} + + +/** + * Indicate of a chunk of memory is a valid ELF header. + * + * @param[in] e_ident A (putative) ELF header + * + * @return true if it's a valid ELF header, false otherwise. + */ +static bool +_is_elf_header(unsigned char e_ident[EI_NIDENT]) +{ + return e_ident[EI_MAG0] == ELFMAG0 + && e_ident[EI_MAG1] == ELFMAG1 + && e_ident[EI_MAG2] == ELFMAG2 + && e_ident[EI_MAG3] == ELFMAG3; +} - if (dl_iterate_phdr (callback, &cbi) != 0) + +static int +_get_remote_elf_image(struct elf_image *ei, + pid_t pid, + unw_word_t ip, + unsigned long *segbase, + unsigned long *mapoff, + char *path, + size_t pathlen) +{ + int ret = -UNW_ENOINFO; + + union { - if (path) + procfs_debuginfo i; + char path[PATH_MAX]; + } debug_info; + + int ctl_fd = unw_nto_procfs_open_ctl(pid); + if (ctl_fd < 0) + { + fprintf(stderr, "error %d opening procfs ctl file for pid %d: %s\n", + errno, pid, strerror(errno)); + return ret; + } + + int as_fd = unw_nto_procfs_open_as(pid); + if (as_fd < 0) + { + fprintf(stderr, "error %d opening procfs as file for pid %d: %s\n", + errno, pid, strerror(errno)); + close(ctl_fd); + return -UNW_ENOINFO; + } + + int map_count = _get_map_count(ctl_fd); + size_t maps_size = sizeof(procfs_mapinfo) * map_count; + procfs_mapinfo *maps = malloc(maps_size); + if (maps == NULL) + { + fprintf(stderr, "error %d in malloc(%zu): %s", errno, maps_size, strerror(errno)); + close (as_fd); + close (ctl_fd); + return -UNW_ENOINFO; + } + + int nmaps = 0; + ret = devctl(ctl_fd, DCMD_PROC_MAPINFO, maps, maps_size, &nmaps); + if (ret != EOK) { - strncpy (path, cbi.path, pathlen); + fprintf(stderr, "error %d in devctl(DCMD_PROC_MAPINFO): %s", ret, strerror(ret)); + free(maps); + close (as_fd); + close (ctl_fd); + return -UNW_ENOINFO; } - *mapoff = cbi.offset; - *segbase = cbi.segbase; + int i = 0; + for (; i < nmaps; ++i) + { + if (maps[i].flags & (MAP_ELF | PROT_EXEC)) + { + uintptr_t vaddr = maps[i].vaddr; + + elf_ehdr_t elf_ehdr; + ret = _read_procfs_as(as_fd, vaddr, sizeof(elf_ehdr), &elf_ehdr); + if (ret != sizeof(elf_ehdr)) + { + continue; + } + + /* Skip region if it's not an ELF segment. */ + if (!_is_elf_header(elf_ehdr.e_ident)) + { + continue; + } + size_t size = elf_ehdr.e_ehsize; + + debug_info.i.vaddr = vaddr; + debug_info.i.path[0]=0; + ret = devctl(ctl_fd, DCMD_PROC_MAPDEBUG, &debug_info, sizeof(debug_info), 0); + if (ret != EOK) + { + fprintf(stderr, "error %d in devctl(DCMD_PROC_MAPDEBUG): %s", ret, strerror(ret)); + continue; + } + uintptr_t reloc = debug_info.i.vaddr; + + elf_phdr_t elf_phdr; + uintptr_t phdr_offset = vaddr + elf_ehdr.e_phoff; + for (int i = 0; i < elf_ehdr.e_phnum; ++i, phdr_offset+=elf_ehdr.e_phentsize) + { + ret = _read_procfs_as(as_fd, phdr_offset, sizeof(elf_phdr_t), &elf_phdr); + if (ret == -1) + { + continue; + } + if (elf_phdr.p_type == PT_LOAD && !(elf_phdr.p_flags&PF_W)) + { + size += elf_phdr.p_memsz; + } + } + + /* Skip segment if the IP is not contained within it. */ + if ((ip < vaddr) || (ip >= (vaddr + size))) + { + continue; + } + + *segbase = vaddr; + *mapoff = reloc; + if (path) + { + strncpy(path, debug_info.i.path, pathlen); + path[pathlen - 1] = '\0'; + } + + if (ei) + ret = elf_map_image(ei, path); + else + ret = strlen (debug_info.i.path) >= pathlen ? -UNW_ENOMEM : UNW_ESUCCESS; + + break; + } + } - ret = elf_map_image (ei, cbi.path); - } + free(maps); + close(as_fd); + close(ctl_fd); + return i == nmaps ? -UNW_ENOINFO : ret; +} + + +int +tdep_get_elf_image(struct elf_image *ei, pid_t pid, unw_word_t ip, + unsigned long *segbase, unsigned long *mapoff, + char *path, size_t pathlen) +{ + int ret = -UNW_ENOINFO; + if (pid != getpid()) + { + ret = _get_remote_elf_image(ei, pid, ip, segbase, mapoff, path, pathlen); + return ret; + } + else + { + struct cb_info cbi; + cbi.ip = ip; + cbi.segbase = 0; + cbi.offset = 0; + cbi.path = NULL; + + if (dl_iterate_phdr (phdr_callback, &cbi) != 0) + { + if (path) + { + strncpy (path, cbi.path, pathlen); + path[pathlen - 1] = '\0'; + } + + *mapoff = cbi.offset; + *segbase = cbi.segbase; + + if (ei) + ret = elf_map_image (ei, cbi.path); + else + ret = strlen (cbi.path) >= pathlen ? -UNW_ENOMEM : UNW_ESUCCESS; + } + } return ret; } diff -Nru libunwind-1.7.2/src/os-solaris.c libunwind-1.8.1/src/os-solaris.c --- libunwind-1.7.2/src/os-solaris.c 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/src/os-solaris.c 2024-02-20 19:54:51.000000000 +0000 @@ -35,7 +35,7 @@ char *path, size_t pathlen) { struct map_iterator mi; - int found = 0, rc; + int found = 0, rc = UNW_ESUCCESS; unsigned long hi; if (maps_init (&mi, pid) < 0) @@ -53,11 +53,18 @@ maps_close (&mi); return -1; } + if (path) { strncpy(path, mi.path, pathlen); + path[pathlen - 1] = '\0'; } - rc = elf_map_image (ei, mi.path); + + if (ei) + rc = elf_map_image (ei, mi.path); + else + rc = strlen(mi.path) >= pathlen ? -UNW_ENOMEM : UNW_ESUCCESS:; + maps_close (&mi); return rc; } diff -Nru libunwind-1.7.2/src/ppc32/Ginit.c libunwind-1.8.1/src/ppc32/Ginit.c --- libunwind-1.7.2/src/ppc32/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ppc32/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -127,14 +127,20 @@ access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, void *arg) { + if (unlikely (as->validate) && unlikely (!unw_address_is_valid (addr, sizeof(unw_word_t)))) + { + Debug (16, "mem[%#010lx] invalid\n", (long)addr); + return -1; + } + if (write) { Debug (12, "mem[%lx] <- %lx\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "mem[%lx] -> %lx\n", addr, *val); } return 0; @@ -157,12 +163,12 @@ if (write) { - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); Debug (12, "%s <- %lx\n", unw_regname (reg), *val); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> %lx\n", unw_regname (reg), *val); } return 0; @@ -212,10 +218,23 @@ return _Uelf32_get_proc_name (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return _Uelf32_get_elf_filename (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void ppc32_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -225,6 +244,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = ppc32_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/ppc32/Gstep.c libunwind-1.8.1/src/ppc32/Gstep.c --- libunwind-1.7.2/src/ppc32/Gstep.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ppc32/Gstep.c 2024-02-20 19:54:51.000000000 +0000 @@ -57,6 +57,7 @@ unw_word_t back_chain_offset, lr_save_offset; struct dwarf_loc back_chain_loc, lr_save_loc, sp_loc, ip_loc; int ret; + int validate = c->dwarf.as->validate; Debug (1, "(cursor=%p, ip=0x%016lx)\n", c, (unsigned long) c->dwarf.ip); @@ -69,7 +70,9 @@ /* Try DWARF-based unwinding... */ + c->dwarf.as->validate = 1; ret = dwarf_step (&c->dwarf); + c->dwarf.as->validate = validate; if (ret < 0 && ret != -UNW_ENOINFO) { diff -Nru libunwind-1.7.2/src/ppc32/ucontext_i.h libunwind-1.8.1/src/ppc32/ucontext_i.h --- libunwind-1.7.2/src/ppc32/ucontext_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ppc32/ucontext_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -44,8 +44,8 @@ //#define MQ_IDX 36 #define LINK_IDX 36 -#define _UC_MCONTEXT_GPR(x) ( (void *)&dmy_ctxt.uc_mcontext.gregs[x] - (void *)&dmy_ctxt) ) -#define _UC_MCONTEXT_FPR(x) ( ((void *)&dmy_ctxt.uc_mcontext.fpregs[x] - (void *)&dmy_ctxt) ) +#define _UC_MCONTEXT_GPR(x) ( ((void *)&dmy_ctxt.uc_mcontext.uc_regs->gregs[x] - (void *)&dmy_ctxt) ) +#define _UC_MCONTEXT_FPR(x) ( ((void *)&dmy_ctxt.uc_mcontext.uc_regs->fpregs.fpregs[x] - (void *)&dmy_ctxt) ) /* These are dummy structures used only for obtaining the offsets of the various structure members. */ diff -Nru libunwind-1.7.2/src/ppc64/Ginit.c libunwind-1.8.1/src/ppc64/Ginit.c --- libunwind-1.7.2/src/ppc64/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ppc64/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -135,14 +135,20 @@ access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, void *arg) { + if (unlikely (as->validate) && unlikely (!unw_address_is_valid (addr, sizeof(unw_word_t)))) + { + Debug (16, "mem[%#010lx] invalid\n", (long)addr); + return -1; + } + if (write) { Debug (12, "mem[%lx] <- %lx\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "mem[%lx] -> %lx\n", addr, *val); } return 0; @@ -166,12 +172,12 @@ if (write) { - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); Debug (12, "%s <- %lx\n", unw_regname (reg), *val); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> %lx\n", unw_regname (reg), *val); } return 0; @@ -223,6 +229,14 @@ return _Uelf64_get_proc_name (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return _Uelf64_get_elf_filename (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void ppc64_local_addr_space_init (void) { @@ -233,6 +247,11 @@ #else local_addr_space.abi = UNW_PPC64_ABI_ELFv1; #endif +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -242,6 +261,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = ppc64_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/ppc64/Gstep.c libunwind-1.8.1/src/ppc64/Gstep.c --- libunwind-1.7.2/src/ppc64/Gstep.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ppc64/Gstep.c 2024-02-20 19:54:51.000000000 +0000 @@ -50,6 +50,126 @@ /* many more fields here, but they are unused by this code */ } stack_frame_t; +//! Recognise PLT entries +/*! For example: + 0x000000001000d1f0 <+0>: 18 00 41 f8 std r2,24(r1) + 0x000000001000d1f4 <+4>: 30 87 82 e9 ld r12,-30928(r2) + 0x000000001000d1f8 <+8>: a6 03 89 7d mtctr r12 + 0x000000001000d1fc <+12>: 20 04 80 4e bctr + + \note The current implementation only supports little endian modes. +*/ +static int +is_plt_entry (struct dwarf_cursor *c) +{ + unw_word_t w0, w1; + unw_accessors_t *a; + + if (c->as->big_endian) + { + return 0; + } + + /* + A PLT (Procedure Linkage Table) is used by the dynamic linker to map the + relative address of a position independent function call onto the real + address of the function. If we attempt to unwind from any instruction + inside the PLT, and the PLT is missing DWARF unwind information, then + conventional unwinding will fail because although the function has been + "called" we have not yet entered the prologue and set-up the stack frame. + + This code looks to see if the instruction is anywhere within a "recognised" + PLT entry (note that the IP could be anywhere within the PLT, so we have to + examine nearby instructions). + */ + + struct instruction_entry + { + uint32_t pattern; + uint32_t mask; + } instructions[4] = + { + // ppc64le + {0xf8410018,0xffffffff}, + {0xe9820000,0xffff0000}, + {0x7d8903a6,0xffffffff}, + {0x4e800420,0xffffffff}, + }; + + a = unw_get_accessors (c->as); + + if( (*a->access_mem) (c->as, c->ip, &w0, 0, c->as_arg) < 0 ) + { + return 0; + } + + /* + NB: the following code is endian sensitive! + + The current implementation is for little-endian modes, big-endian modes + will see the first instruction in the high bits of w0, and the second + instruction in the low bits of w0. Some tweaks will be needed to read from + the correct part of the word to support big endian modes. + */ + if(( w0 & instructions[0].mask) == instructions[0].pattern && + ((w0>>32) & instructions[1].mask) == instructions[1].pattern) + { + if( (*a->access_mem) (c->as, c->ip+8, &w1, 0, c->as_arg) >= 0 && + ( w1 & instructions[2].mask) == instructions[2].pattern && + ((w1>>32) & instructions[3].mask) == instructions[3].pattern ) + { + return 1; + } + else + { + return 0; + } + } + else if(( w0 & instructions[2].mask) == instructions[2].pattern && + ((w0>>32) & instructions[3].mask) == instructions[3].pattern) + { + w1 = w0; + if( (*a->access_mem) (c->as, c->ip-8, &w0, 0, c->as_arg) >= 0 && + ( w0 & instructions[0].mask) == instructions[0].pattern && + ((w0>>32) & instructions[1].mask) == instructions[1].pattern ) + { + return 1; + } + else + { + return 0; + } + } + else if(( w0 & instructions[1].mask) == instructions[1].pattern && + ((w0>>32) & instructions[2].mask) == instructions[2].pattern) + { + if( (*a->access_mem) (c->as, c->ip-4, &w0, 0, c->as_arg) < 0 || + (*a->access_mem) (c->as, c->ip+4, &w1, 0, c->as_arg) < 0 ) + { + return 0; + } + } + else if( (w0 & instructions[3].mask) == instructions[3].pattern ) + { + if( (*a->access_mem) (c->as, c->ip-12, &w0, 0, c->as_arg) < 0 || + (*a->access_mem) (c->as, c->ip-4, &w1, 0, c->as_arg) < 0 ) + { + return 0; + } + } + + if(( w0 & instructions[0].mask) == instructions[0].pattern && + ((w0>>32) & instructions[1].mask) == instructions[1].pattern && + ( w1 & instructions[2].mask) == instructions[2].pattern && + ((w1>>32) & instructions[3].mask) == instructions[3].pattern ) + { + return 1; + } + else + { + return 0; + } +} int unw_step (unw_cursor_t * cursor) @@ -59,12 +179,15 @@ unw_word_t back_chain_offset, lr_save_offset, v_regs_ptr; struct dwarf_loc back_chain_loc, lr_save_loc, sp_loc, ip_loc, v_regs_loc; int ret, i; + int validate = c->dwarf.as->validate; Debug (1, "(cursor=%p, ip=0x%016lx)\n", c, (unsigned long) c->dwarf.ip); /* Try DWARF-based unwinding... */ + c->dwarf.as->validate = 1; ret = dwarf_step (&c->dwarf); + c->dwarf.as->validate = validate; if (ret < 0 && ret != -UNW_ENOINFO) { @@ -76,49 +199,97 @@ { if (likely (unw_is_signal_frame (cursor) <= 0)) { - /* DWARF unwinding failed. As of 09/26/2006, gcc in 64-bit mode - produces the mandatory level of traceback record in the code, but - I get the impression that this is transitory, that eventually gcc - will not produce any traceback records at all. So, for now, we - won't bother to try to find and use these records. - - We can, however, attempt to unwind the frame by using the callback - chain. This is very crude, however, and won't be able to unwind - any registers besides the IP, SP, and LR . */ - - back_chain_offset = ((void *) &dummy.back_chain - (void *) &dummy); - lr_save_offset = ((void *) &dummy.lr_save - (void *) &dummy); - - back_chain_loc = DWARF_LOC (c->dwarf.cfa + back_chain_offset, 0); - - if ((ret = - dwarf_get (&c->dwarf, back_chain_loc, &c->dwarf.cfa)) < 0) + /* DWARF failed. */ + if (is_plt_entry (&c->dwarf)) { - Debug (2, - "Unable to retrieve CFA from back chain in stack frame - %d\n", - ret); - return ret; - } - if (c->dwarf.cfa == 0) - /* Unless the cursor or stack is corrupt or uninitialized we've most - likely hit the top of the stack */ - return 0; - - lr_save_loc = DWARF_LOC (c->dwarf.cfa + lr_save_offset, 0); + Debug (2, "found plt entry\n"); - if ((ret = dwarf_get (&c->dwarf, lr_save_loc, &c->dwarf.ip)) < 0) + /* + Fallback mode that uses the link register. This is important + for cases where a function without unwind information has been + called, but not yet set-up its stack frame (basically PLT calls). + + In this case we can't trust c->dwarf.cfa (the stack frame) + because it will currently point to the caller's stack frame - + but we can use the current value of the link register to get + back to the caller. We then have to hope that libunwind manages + to resume unwinding properly from the caller IP. + */ + c->dwarf.loc[UNW_PPC64_NIP] = c->dwarf.loc[UNW_PPC64_LR]; + c->dwarf.loc[UNW_PPC64_LR] = DWARF_NULL_LOC; + if (!DWARF_IS_NULL_LOC (c->dwarf.loc[UNW_PPC64_NIP])) + { + ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_PPC64_NIP], &c->dwarf.ip); + if (ret < 0) + { + Debug (2, "failed to get pc from link register: %d\n", ret); + return ret; + } + Debug (2, "link register = 0x%016lx\n", c->dwarf.ip); + ret = 1; + } + else + { + Debug (2, "link register was not saved\n"); + c->dwarf.ip = 0; + } + } + else { - Debug (2, - "Unable to retrieve IP from lr save in stack frame - %d\n", - ret); - return ret; + /* + Fallback mode that uses a conventional stack unwinding. This is + important for functions without proper DWARF unwind information, + in particular without this fallback the clone() function will not + unwind properly. + + We do the unwind by first looking for the caller stack pointer + saved in the current stack frame. This will point to the caller's + 'linkage area'. If the caller stack pointer is null, we assume we + have reached the top of the stack. + + The address 24(SP) (where SP is the caller stack pointer) contains + the saved 'link register', the link register is effectively the + return address for the called function - so we can use the link + register to get an IP inside the calling function. + + Note: there is no requirement for leaf functions to save the + stack pointer or link register, I'm not entirely sure why + libunwind doesn't handle this case. + */ + Debug (2, "fallback\n"); + + back_chain_offset = ((void *) &dummy.back_chain - (void *) &dummy); + lr_save_offset = ((void *) &dummy.lr_save - (void *) &dummy); + + back_chain_loc = DWARF_LOC (c->dwarf.cfa + back_chain_offset, 0); + + if ((ret = + dwarf_get (&c->dwarf, back_chain_loc, &c->dwarf.cfa)) < 0) + { + Debug (2, + "Unable to retrieve CFA from back chain in stack frame - %d\n", + ret); + return ret; + } + if (c->dwarf.cfa == 0) + /* Unless the cursor or stack is corrupt or uninitialized we've most + likely hit the top of the stack */ + return 0; + + lr_save_loc = DWARF_LOC (c->dwarf.cfa + lr_save_offset, 0); + + if ((ret = dwarf_get (&c->dwarf, lr_save_loc, &c->dwarf.ip)) < 0) + { + Debug (2, + "Unable to retrieve IP from lr save in stack frame - %d\n", + ret); + return ret; + } + ret = 1; + /* Mark all registers unsaved */ + for (i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) + c->dwarf.loc[i] = DWARF_NULL_LOC; } - - /* Mark all registers unsaved */ - for (i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) - c->dwarf.loc[i] = DWARF_NULL_LOC; - - ret = 1; } else { diff -Nru libunwind-1.7.2/src/ptrace/_UPT_access_fpreg.c libunwind-1.8.1/src/ptrace/_UPT_access_fpreg.c --- libunwind-1.7.2/src/ptrace/_UPT_access_fpreg.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_access_fpreg.c 2024-02-20 19:54:51.000000000 +0000 @@ -28,7 +28,7 @@ #if HAVE_DECL_PTRACE_POKEUSER || defined(HAVE_TTRACE) int -_UPT_access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val, +_UPT_access_fpreg (unw_addr_space_t as UNUSED, unw_regnum_t reg, unw_fpreg_t *val, int write, void *arg) { unw_word_t *wp = (unw_word_t *) val; @@ -107,7 +107,11 @@ #elif defined(__i386__) memcpy(&fpreg.fpr_acc[reg], val, sizeof(unw_fpreg_t)); #elif defined(__arm__) +# if __FreeBSD_version >= 1400079 + memcpy(&fpreg.fpr_r[reg], val, sizeof(unw_fpreg_t)); +# else memcpy(&fpreg.fpr[reg], val, sizeof(unw_fpreg_t)); +# endif #elif defined(__aarch64__) memcpy(&fpreg.fp_q[reg], val, sizeof(unw_fpreg_t)); #elif defined(__powerpc__) @@ -123,7 +127,11 @@ #elif defined(__i386__) memcpy(val, &fpreg.fpr_acc[reg], sizeof(unw_fpreg_t)); #elif defined(__arm__) - memcpy(val, &fpreg.fpr[reg], sizeof(unw_fpreg_t)); +# if __FreeBSD_version >= 1400079 + memcpy(&fpreg.fpr_r[reg], val, sizeof(unw_fpreg_t)); +# else + memcpy(&fpreg.fpr[reg], val, sizeof(unw_fpreg_t)); +# endif #elif defined(__aarch64__) memcpy(val, &fpreg.fp_q[reg], sizeof(unw_fpreg_t)); #elif defined(__powerpc__) diff -Nru libunwind-1.7.2/src/ptrace/_UPT_access_mem.c libunwind-1.8.1/src/ptrace/_UPT_access_mem.c --- libunwind-1.7.2/src/ptrace/_UPT_access_mem.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_access_mem.c 2024-02-20 19:54:51.000000000 +0000 @@ -28,7 +28,7 @@ #if HAVE_DECL_PTRACE_POKEDATA || defined(HAVE_TTRACE) int -_UPT_access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, +_UPT_access_mem (unw_addr_space_t as UNUSED, unw_word_t addr, unw_word_t *val, int write, void *arg) { struct UPT_info *ui = arg; diff -Nru libunwind-1.7.2/src/ptrace/_UPT_access_reg.c libunwind-1.8.1/src/ptrace/_UPT_access_reg.c --- libunwind-1.7.2/src/ptrace/_UPT_access_reg.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_access_reg.c 2024-02-20 19:54:51.000000000 +0000 @@ -34,10 +34,10 @@ # include "tdep-ia64/rse.h" #endif -#if HAVE_DECL_PTRACE_SETREGSET +#if HAVE_DECL_PTRACE_SETREGSET && (defined(__linux__) && !defined(UNW_TARGET_X86)) #include int -_UPT_access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, +_UPT_access_reg (unw_addr_space_t as UNUSED, unw_regnum_t reg, unw_word_t *val, int write, void *arg) { struct UPT_info *ui = arg; @@ -77,9 +77,9 @@ Debug (1, "bad register %s [%u] (error: %s)\n", unw_regname(reg), reg, strerror (errno)); return -UNW_EBADREG; } -#elif HAVE_DECL_PTRACE_POKEUSER || defined(HAVE_TTRACE) +#elif (HAVE_DECL_PTRACE_POKEUSER || defined(HAVE_TTRACE)) && (defined(__linux__) && !defined(UNW_TARGET_X86)) int -_UPT_access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, +_UPT_access_reg (UNUSED unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write, void *arg) { struct UPT_info *ui = arg; @@ -321,13 +321,52 @@ Debug (1, "bad register %s [%u] (error: %s)\n", unw_regname(reg), reg, strerror (errno)); return -UNW_EBADREG; } -#elif HAVE_DECL_PT_GETREGS +#elif defined(HAVE_DECL_PT_GETREGS) && defined(__linux__) +# include + int _UPT_access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write, void *arg) { struct UPT_info *ui = arg; pid_t pid = ui->pid; + struct user_regs_struct regs; + char *r; + +#if UNW_DEBUG + Debug(16, "using getregs: reg: %s [%u], val: %lx, write: %u\n", unw_regname(reg), (unsigned) reg, (long) val, write); + + if (write) + Debug (16, "%s [%u] <- %lx\n", unw_regname (reg), (unsigned) reg, (long) *val); +#endif + if ((unsigned) reg >= ARRAY_SIZE (_UPT_reg_offset)) + { + errno = EINVAL; + goto badreg; + } + r = (char *)®s + _UPT_reg_offset[reg]; + if (ptrace(PT_GETREGS, pid, NULL, ®s) == -1) + goto badreg; + if (write) { + memcpy(r, val, sizeof(unw_word_t)); + if (ptrace(PT_SETREGS, pid, NULL, ®s) == -1) + goto badreg; + } else + memcpy(val, r, sizeof(unw_word_t)); + return 0; + + badreg: + Debug (1, "bad register %s [%u] (error: %s)\n", unw_regname(reg), reg, strerror (errno)); + return -UNW_EBADREG; +} + +#elif defined(HAVE_DECL_PT_GETREGS) && defined(__FreeBSD__) +int +_UPT_access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, + int write, void *arg) +{ + struct UPT_info *ui = arg; + pid_t pid = ui->pid; gregset_t regs; char *r; @@ -337,6 +376,7 @@ if (write) Debug (16, "%s [%u] <- %lx\n", unw_regname (reg), (unsigned) reg, (long) *val); #endif + if ((unsigned) reg >= ARRAY_SIZE (_UPT_reg_offset)) { errno = EINVAL; diff -Nru libunwind-1.7.2/src/ptrace/_UPT_accessors.c libunwind-1.8.1/src/ptrace/_UPT_accessors.c --- libunwind-1.7.2/src/ptrace/_UPT_accessors.c 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_accessors.c 2024-02-20 19:54:51.000000000 +0000 @@ -34,5 +34,6 @@ .access_reg = _UPT_access_reg, .access_fpreg = _UPT_access_fpreg, .resume = _UPT_resume, - .get_proc_name = _UPT_get_proc_name + .get_proc_name = _UPT_get_proc_name, + .get_elf_filename = _UPT_get_elf_filename }; diff -Nru libunwind-1.7.2/src/ptrace/_UPT_create.c libunwind-1.8.1/src/ptrace/_UPT_create.c --- libunwind-1.7.2/src/ptrace/_UPT_create.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_create.c 2024-02-20 19:54:51.000000000 +0000 @@ -32,6 +32,8 @@ { struct UPT_info *ui = malloc (sizeof (struct UPT_info)); + mi_init (); + if (!ui) return NULL; diff -Nru libunwind-1.7.2/src/ptrace/_UPT_get_dyn_info_list_addr.c libunwind-1.8.1/src/ptrace/_UPT_get_dyn_info_list_addr.c --- libunwind-1.7.2/src/ptrace/_UPT_get_dyn_info_list_addr.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_get_dyn_info_list_addr.c 2024-02-20 19:54:51.000000000 +0000 @@ -77,8 +77,10 @@ DWARF2 unwind info. */ static inline int -get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg, - int *countp) +get_list_addr (unw_addr_space_t as UNUSED, + unw_word_t *dil_addr UNUSED, + void *arg UNUSED, + int *countp) { # warning Implement get_list_addr(), please. *countp = 0; diff -Nru libunwind-1.7.2/src/ptrace/_UPT_get_elf_filename.c libunwind-1.8.1/src/ptrace/_UPT_get_elf_filename.c --- libunwind-1.7.2/src/ptrace/_UPT_get_elf_filename.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_get_elf_filename.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,38 @@ +/* + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "_UPT_internal.h" + +int +_UPT_get_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, void *arg) +{ + struct UPT_info *ui = arg; + +#if UNW_ELF_CLASS == UNW_ELFCLASS64 + return _Uelf64_get_elf_filename (as, ui->pid, ip, buf, buf_len, offp); +#elif UNW_ELF_CLASS == UNW_ELFCLASS32 + return _Uelf32_get_elf_filename (as, ui->pid, ip, buf, buf_len, offp); +#else + return -UNW_ENOINFO; +#endif +} diff -Nru libunwind-1.7.2/src/ptrace/_UPT_put_unwind_info.c libunwind-1.8.1/src/ptrace/_UPT_put_unwind_info.c --- libunwind-1.7.2/src/ptrace/_UPT_put_unwind_info.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_put_unwind_info.c 2024-02-20 19:54:51.000000000 +0000 @@ -26,7 +26,7 @@ #include "_UPT_internal.h" void -_UPT_put_unwind_info (unw_addr_space_t as, unw_proc_info_t *pi, void *arg) +_UPT_put_unwind_info (unw_addr_space_t as UNUSED, unw_proc_info_t *pi, void *arg UNUSED) { if (!pi->unwind_info) return; diff -Nru libunwind-1.7.2/src/ptrace/_UPT_reg_offset.c libunwind-1.8.1/src/ptrace/_UPT_reg_offset.c --- libunwind-1.7.2/src/ptrace/_UPT_reg_offset.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_reg_offset.c 2024-02-20 19:54:51.000000000 +0000 @@ -623,64 +623,6 @@ [UNW_AARCH64_SP] = 0xf8, [UNW_AARCH64_PC] = 0x100, [UNW_AARCH64_PSTATE] = 0x108 -#elif defined(UNW_TARGET_TILEGX) - [UNW_TILEGX_R0] = 0x00, - [UNW_TILEGX_R1] = 0x08, - [UNW_TILEGX_R2] = 0x10, - [UNW_TILEGX_R3] = 0x08, - [UNW_TILEGX_R4] = 0x20, - [UNW_TILEGX_R5] = 0x28, - [UNW_TILEGX_R6] = 0x30, - [UNW_TILEGX_R7] = 0x38, - [UNW_TILEGX_R8] = 0x40, - [UNW_TILEGX_R9] = 0x48, - [UNW_TILEGX_R10] = 0x50, - [UNW_TILEGX_R11] = 0x58, - [UNW_TILEGX_R12] = 0x60, - [UNW_TILEGX_R13] = 0x68, - [UNW_TILEGX_R14] = 0x70, - [UNW_TILEGX_R15] = 0x78, - [UNW_TILEGX_R16] = 0x80, - [UNW_TILEGX_R17] = 0x88, - [UNW_TILEGX_R18] = 0x90, - [UNW_TILEGX_R19] = 0x98, - [UNW_TILEGX_R20] = 0xa0, - [UNW_TILEGX_R21] = 0xa8, - [UNW_TILEGX_R22] = 0xb0, - [UNW_TILEGX_R23] = 0xb8, - [UNW_TILEGX_R24] = 0xc0, - [UNW_TILEGX_R25] = 0xc8, - [UNW_TILEGX_R26] = 0xd0, - [UNW_TILEGX_R27] = 0xd8, - [UNW_TILEGX_R28] = 0xe0, - [UNW_TILEGX_R29] = 0xe8, - [UNW_TILEGX_R30] = 0xf0, - [UNW_TILEGX_R31] = 0xf8, - [UNW_TILEGX_R32] = 0x100, - [UNW_TILEGX_R33] = 0x108, - [UNW_TILEGX_R34] = 0x110, - [UNW_TILEGX_R35] = 0x118, - [UNW_TILEGX_R36] = 0x120, - [UNW_TILEGX_R37] = 0x128, - [UNW_TILEGX_R38] = 0x130, - [UNW_TILEGX_R39] = 0x138, - [UNW_TILEGX_R40] = 0x140, - [UNW_TILEGX_R41] = 0x148, - [UNW_TILEGX_R42] = 0x150, - [UNW_TILEGX_R43] = 0x158, - [UNW_TILEGX_R44] = 0x160, - [UNW_TILEGX_R45] = 0x168, - [UNW_TILEGX_R46] = 0x170, - [UNW_TILEGX_R47] = 0x178, - [UNW_TILEGX_R48] = 0x180, - [UNW_TILEGX_R49] = 0x188, - [UNW_TILEGX_R50] = 0x190, - [UNW_TILEGX_R51] = 0x198, - [UNW_TILEGX_R52] = 0x1a0, - [UNW_TILEGX_R53] = 0x1a8, - [UNW_TILEGX_R54] = 0x1b0, - [UNW_TILEGX_R55] = 0x1b8, - [UNW_TILEGX_PC] = 0x1a0 #elif defined(UNW_TARGET_S390X) [UNW_S390X_R0] = 0x10, [UNW_S390X_R1] = 0x18, diff -Nru libunwind-1.7.2/src/ptrace/_UPT_resume.c libunwind-1.8.1/src/ptrace/_UPT_resume.c --- libunwind-1.7.2/src/ptrace/_UPT_resume.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/ptrace/_UPT_resume.c 2024-02-20 19:54:51.000000000 +0000 @@ -26,10 +26,12 @@ #include "_UPT_internal.h" int -_UPT_resume (unw_addr_space_t as, unw_cursor_t *c, void *arg) +_UPT_resume (unw_addr_space_t as UNUSED, unw_cursor_t *c UNUSED, void *arg) { struct UPT_info *ui = arg; + mi_init (); + #ifdef HAVE_TTRACE # warning No support for ttrace() yet. #elif HAVE_DECL_PTRACE_CONT diff -Nru libunwind-1.7.2/src/riscv/Gglobal.c libunwind-1.8.1/src/riscv/Gglobal.c --- libunwind-1.7.2/src/riscv/Gglobal.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/riscv/Gglobal.c 2024-02-20 19:54:51.000000000 +0000 @@ -117,8 +117,6 @@ dwarf_init (); #ifndef UNW_REMOTE_ONLY - tdep_init_mem_validate (); - riscv_local_addr_space_init (); #endif atomic_store(&tdep_init_done, 1); /* signal that we're initialized... */ diff -Nru libunwind-1.7.2/src/riscv/Ginit.c libunwind-1.8.1/src/riscv/Ginit.c --- libunwind-1.7.2/src/riscv/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/riscv/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -95,233 +95,6 @@ return 0; } -// Memory validation routines are from aarch64 - -static int mem_validate_pipe[2] = {-1, -1}; - -#ifdef HAVE_PIPE2 -static inline void -do_pipe2 (int pipefd[2]) -{ - pipe2 (pipefd, O_CLOEXEC | O_NONBLOCK); -} -#else -static inline void -set_pipe_flags (int fd) -{ - int fd_flags = fcntl (fd, F_GETFD, 0); - int status_flags = fcntl (fd, F_GETFL, 0); - - fd_flags |= FD_CLOEXEC; - fcntl (fd, F_SETFD, fd_flags); - - status_flags |= O_NONBLOCK; - fcntl (fd, F_SETFL, status_flags); -} - -static inline void -do_pipe2 (int pipefd[2]) -{ - pipe (pipefd); - set_pipe_flags(pipefd[0]); - set_pipe_flags(pipefd[1]); -} -#endif - -static inline void -open_pipe (void) -{ - if (mem_validate_pipe[0] != -1) - close (mem_validate_pipe[0]); - if (mem_validate_pipe[1] != -1) - close (mem_validate_pipe[1]); - - do_pipe2 (mem_validate_pipe); -} - -ALWAYS_INLINE -static int -write_validate (void *addr) -{ - int ret = -1; - ssize_t bytes = 0; - - do - { - char buf; - bytes = read (mem_validate_pipe[0], &buf, 1); - } - while ( errno == EINTR ); - - int valid_read = (bytes > 0 || errno == EAGAIN || errno == EWOULDBLOCK); - if (!valid_read) - { - // re-open closed pipe - open_pipe (); - } - - do - { - ret = write (mem_validate_pipe[1], addr, 1); - } - while ( errno == EINTR ); - - return ret; -} - -static int (*mem_validate_func) (void *addr, size_t len); -static int msync_validate (void *addr, size_t len) -{ - if (msync (addr, len, MS_ASYNC) != 0) - { - return -1; - } - - return write_validate (addr); -} - -#ifdef HAVE_MINCORE -static int mincore_validate (void *addr, size_t len) -{ - unsigned char mvec[2]; /* Unaligned access may cross page boundary */ - - /* mincore could fail with EAGAIN but we conservatively return -1 - instead of looping. */ - if (mincore (addr, len, (unsigned char *)mvec) != 0) - { - return -1; - } - - return write_validate (addr); -} -#endif - -/* Initialise memory validation method. On linux kernels <2.6.21, - mincore() returns incorrect value for MAP_PRIVATE mappings, - such as stacks. If mincore() was available at compile time, - check if we can actually use it. If not, use msync() instead. */ -HIDDEN void -tdep_init_mem_validate (void) -{ - open_pipe (); - -#ifdef HAVE_MINCORE - unsigned char present = 1; - size_t len = unw_page_size; - unw_word_t addr = uwn_page_start((unw_word_t)&present); - unsigned char mvec[1]; - int ret; - while ((ret = mincore((void *)addr, len, (unsigned char *)mvec)) == -1 && - errno == EAGAIN) - { - } - if (ret == 0) - { - Debug(1, "using mincore to validate memory\n"); - mem_validate_func = mincore_validate; - } - else -#endif - { - Debug(1, "using msync to validate memory\n"); - mem_validate_func = msync_validate; - } -} - -/* Cache of already validated addresses */ -#define NLGA 4 -#if defined(HAVE___CACHE_PER_THREAD) && HAVE___CACHE_PER_THREAD -// thread-local variant -static _Thread_local unw_word_t last_good_addr[NLGA]; -static _Thread_local int lga_victim; - -static int -is_cached_valid_mem(unw_word_t addr) -{ - int i; - for (i = 0; i < NLGA; i++) - { - if (addr == last_good_addr[i]) - return 1; - } - return 0; -} - -static void -cache_valid_mem(unw_word_t addr) -{ - int i, victim; - victim = lga_victim; - for (i = 0; i < NLGA; i++) { - if (last_good_addr[victim] == 0) { - last_good_addr[victim] = addr; - return; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - last_good_addr[victim] = addr; - victim = (victim + 1) % NLGA; - lga_victim = victim; -} - -#else -// global, thread safe variant -static _Atomic unw_word_t last_good_addr[NLGA]; -static _Atomic int lga_victim; - -static int -is_cached_valid_mem(unw_word_t addr) -{ - int i; - for (i = 0; i < NLGA; i++) - { - if (addr == atomic_load(&last_good_addr[i])) - return 1; - } - return 0; -} - -static void -cache_valid_mem(unw_word_t addr) -{ - int i, victim; - victim = atomic_load(&lga_victim); - unw_word_t zero = 0; - for (i = 0; i < NLGA; i++) { - if (atomic_compare_exchange_strong(&last_good_addr[victim], &zero, addr)) { - return; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - atomic_store(&last_good_addr[victim], addr); - victim = (victim + 1) % NLGA; - atomic_store(&lga_victim, victim); -} -#endif - -static int -validate_mem (unw_word_t addr) -{ - size_t len = unw_page_size; - addr = uwn_page_start(addr); - - if (addr == 0) - return -1; - - if (is_cached_valid_mem(addr)) - return 0; - - if (mem_validate_func ((void *) addr, len) == -1) - return -1; - - cache_valid_mem(addr); - - return 0; -} static int access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, @@ -338,11 +111,11 @@ const struct cursor *c = (const struct cursor *)arg; if (likely (c != NULL) && unlikely (c->validate) - && unlikely (validate_mem (addr))) { + && unlikely (!unw_address_is_valid (addr, sizeof(unw_word_t)))) { Debug (16, "mem[%016lx] -> invalid\n", addr); return -1; } - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (16, "mem[%lx] -> %lx\n", addr, *val); } return 0; @@ -369,7 +142,7 @@ } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> %lx\n", unw_regname (reg), *val); } return 0; @@ -420,11 +193,24 @@ return elf_w (get_proc_name) (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return elf_w (get_elf_filename) (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void riscv_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.addr_size = sizeof (void *); local_addr_space.acc.find_proc_info = dwarf_find_proc_info; @@ -435,6 +221,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = riscv_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; local_addr_space.big_endian = target_is_big_endian(); unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/s390x/Gglobal.c libunwind-1.8.1/src/s390x/Gglobal.c --- libunwind-1.7.2/src/s390x/Gglobal.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/s390x/Gglobal.c 2024-02-20 19:54:51.000000000 +0000 @@ -90,8 +90,6 @@ dwarf_init (); #ifndef UNW_REMOTE_ONLY - tdep_init_mem_validate (); - s390x_local_addr_space_init (); #endif atomic_store(&tdep_init_done, 1); /* signal that we're initialized... */ diff -Nru libunwind-1.7.2/src/s390x/Ginit.c libunwind-1.8.1/src/s390x/Ginit.c --- libunwind-1.7.2/src/s390x/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/s390x/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -94,155 +94,6 @@ return 0; } -static int mem_validate_pipe[2] = {-1, -1}; - -static inline void -open_pipe (void) -{ - /* ignore errors for closing invalid fd's */ - close (mem_validate_pipe[0]); - close (mem_validate_pipe[1]); - - pipe2 (mem_validate_pipe, O_CLOEXEC | O_NONBLOCK); -} - -ALWAYS_INLINE -static int -write_validate (void *addr) -{ - int ret = -1; - ssize_t bytes = 0; - - do - { - char buf; - bytes = read (mem_validate_pipe[0], &buf, 1); - } - while ( errno == EINTR ); - - int valid_read = (bytes > 0 || errno == EAGAIN || errno == EWOULDBLOCK); - if (!valid_read) - { - // re-open closed pipe - open_pipe (); - } - - do - { - /* use syscall insteadof write() so that ASAN does not complain */ - ret = syscall (SYS_write, mem_validate_pipe[1], addr, 1); - } - while ( errno == EINTR ); - - return ret; -} - -static int (*mem_validate_func) (void *addr, size_t len); -static int msync_validate (void *addr, size_t len) -{ - if (msync (addr, len, MS_ASYNC) != 0) - { - return -1; - } - - return write_validate (addr); -} - -#ifdef HAVE_MINCORE -static int mincore_validate (void *addr, size_t len) -{ - unsigned char mvec[2]; /* Unaligned access may cross page boundary */ - size_t i; - - /* mincore could fail with EAGAIN but we conservatively return -1 - instead of looping. */ - if (mincore (addr, len, mvec) != 0) - { - return -1; - } - - for (i = 0; i < (len + unw_page_size - 1) / unw_page_size; i++) - { - if (!(mvec[i] & 1)) return -1; - } - - return write_validate (addr); -} -#endif - -/* Initialise memory validation method. On linux kernels <2.6.21, - mincore() returns incorrect value for MAP_PRIVATE mappings, - such as stacks. If mincore() was available at compile time, - check if we can actually use it. If not, use msync() instead. */ -HIDDEN void -tdep_init_mem_validate (void) -{ - open_pipe (); - -#ifdef HAVE_MINCORE - unsigned char present = 1; - size_t len = unw_page_size; - unw_word_t addr = uwn_page_start((unw_word_t)&present); - unsigned char mvec[1]; - int ret; - while ((ret = mincore((void *)addr, len, mvec)) == -1 && - errno == EAGAIN) - { - } - if (ret == 0 && (mvec[0] & 1)) - { - Debug(1, "using mincore to validate memory\n"); - mem_validate_func = mincore_validate; - } - else -#endif - { - Debug(1, "using msync to validate memory\n"); - mem_validate_func = msync_validate; - } -} - -/* Cache of already validated addresses */ -#define NLGA 4 -static unw_word_t last_good_addr[NLGA]; -static int lga_victim; - -static int -validate_mem (unw_word_t addr) -{ - int i, victim; - size_t len = unw_page_size; - addr = uwn_page_start(addr); - - if (addr == 0) - return -1; - - for (i = 0; i < NLGA; i++) - { - if (last_good_addr[i] && (addr == last_good_addr[i])) - return 0; - } - - if (mem_validate_func ((void *) addr, len) == -1) - return -1; - - victim = lga_victim; - for (i = 0; i < NLGA; i++) { - if (!last_good_addr[victim]) { - last_good_addr[victim++] = addr; - return 0; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - last_good_addr[victim] = addr; - victim = (victim + 1) % NLGA; - lga_victim = victim; - - return 0; -} - static int access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, void *arg) @@ -250,18 +101,18 @@ if (unlikely (write)) { Debug (16, "mem[%016lx] <- %lx\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { /* validate address */ const struct cursor *c = (const struct cursor *)arg; if (likely (c != NULL) && unlikely (c->validate) - && unlikely (validate_mem (addr))) { + && unlikely (!unw_address_is_valid (addr, sizeof(unw_word_t)))) { Debug (16, "mem[%016lx] -> invalid\n", addr); return -1; } - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (16, "mem[%016lx] -> %lx\n", addr, *val); } return 0; @@ -282,12 +133,12 @@ if (write) { - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); Debug (12, "%s <- 0x%016lx\n", unw_regname (reg), *val); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> 0x%016lx\n", unw_regname (reg), *val); } return 0; @@ -338,10 +189,23 @@ return _Uelf64_get_proc_name (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return _Uelf64_get_elf_filename (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void s390x_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNW_CACHE_GLOBAL; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -351,10 +215,8 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = s390x_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); - - memset (last_good_addr, 0, sizeof (unw_word_t) * NLGA); - lga_victim = 0; } #endif /* !UNW_REMOTE_ONLY */ diff -Nru libunwind-1.7.2/src/setjmp/longjmp.c libunwind-1.8.1/src/setjmp/longjmp.c --- libunwind-1.7.2/src/setjmp/longjmp.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/setjmp/longjmp.c 2024-02-20 19:54:51.000000000 +0000 @@ -54,6 +54,10 @@ #endif #endif /* __GLIBC__ */ +#ifndef _JB_STK_SHIFT +#define _JB_STK_SHIFT 0 +#endif + void _longjmp (jmp_buf env, int val) { @@ -70,11 +74,7 @@ { if (unw_get_reg (&c, UNW_REG_SP, &sp) < 0) abort (); -#ifdef __FreeBSD__ - if (sp != wp[JB_SP] + sizeof(unw_word_t)) -#else - if (sp != wp[JB_SP]) -#endif + if (sp != (wp[JB_SP] + _JB_STK_SHIFT)) continue; if (!bsp_match (&c, wp)) diff -Nru libunwind-1.7.2/src/setjmp/setjmp_i.h libunwind-1.8.1/src/setjmp/setjmp_i.h --- libunwind-1.7.2/src/setjmp/setjmp_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/setjmp/setjmp_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -23,10 +23,13 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#if UNW_TARGET_IA64 +#ifndef libunwind_setjmp_setjmp_i_h +#define libunwind_setjmp_setjmp_i_h #include "libunwind_i.h" -#include "tdep-ia64/rse.h" + +#if UNW_TARGET_IA64 +# include "tdep-ia64/rse.h" static inline int bsp_match (unw_cursor_t *c, unw_word_t *wp) @@ -103,16 +106,18 @@ #else /* !UNW_TARGET_IA64 */ static inline int -bsp_match (unw_cursor_t *c, unw_word_t *wp) +bsp_match (unw_cursor_t *c UNUSED, unw_word_t *wp UNUSED) { return 1; } static inline int -resume_restores_sigmask (unw_cursor_t *c, unw_word_t *wp) +resume_restores_sigmask (unw_cursor_t *c UNUSED, unw_word_t *wp UNUSED) { /* We may want to do this analogously as for ia64... */ return 0; } #endif /* !UNW_TARGET_IA64 */ + +#endif /* libunwind_setjmp_setjmp_i_h */ diff -Nru libunwind-1.7.2/src/setjmp/siglongjmp.c libunwind-1.8.1/src/setjmp/siglongjmp.c --- libunwind-1.7.2/src/setjmp/siglongjmp.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/setjmp/siglongjmp.c 2024-02-20 19:54:51.000000000 +0000 @@ -57,6 +57,10 @@ #endif #endif /* __GLIBC_PREREQ */ +#ifndef _JB_STK_SHIFT +#define _JB_STK_SHIFT 0 +#endif + void siglongjmp (sigjmp_buf env, int val) { @@ -75,11 +79,7 @@ { if (unw_get_reg (&c, UNW_REG_SP, &sp) < 0) abort (); -#ifdef __FreeBSD__ - if (sp != wp[JB_SP] + sizeof(unw_word_t)) -#else - if (sp != wp[JB_SP]) -#endif + if (sp != (wp[JB_SP] + _JB_STK_SHIFT)) continue; if (!bsp_match (&c, wp)) @@ -93,7 +93,11 @@ /* Order of evaluation is important here: if unw_resume() restores signal mask, we must set it up appropriately, even if wp[JB_MASK_SAVED] is FALSE. */ +#ifdef __FreeBSD__ + if ((wp[JB_MASK_SAVED] & 0x1) == 0x1) +#else if (!resume_restores_sigmask (&c, wp) && wp[JB_MASK_SAVED]) +#endif { /* sigmask was saved */ #if defined(__linux__) || defined(__sun) @@ -108,7 +112,7 @@ && unw_set_reg (&c, UNW_REG_EH + 3, wp[JB_MASK + 1]) < 0)) abort (); #elif defined(__FreeBSD__) - if (unw_set_reg (&c, UNW_REG_EH + 2, &wp[JB_MASK]) < 0) + if (unw_set_reg (&c, UNW_REG_EH + 2, (unw_word_t)&wp[JB_MASK]) < 0) abort(); #else #error Port me diff -Nru libunwind-1.7.2/src/sh/Ginit.c libunwind-1.8.1/src/sh/Ginit.c --- libunwind-1.7.2/src/sh/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/sh/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -85,11 +85,11 @@ if (write) { Debug (16, "mem[%x] <- %x\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (16, "mem[%x] -> %x\n", addr, *val); } return 0; @@ -110,12 +110,12 @@ if (write) { - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); Debug (12, "%s <- %x\n", unw_regname (reg), *val); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> %x\n", unw_regname (reg), *val); } return 0; @@ -166,10 +166,23 @@ return _Uelf32_get_proc_name (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return _Uelf32_get_elf_filename (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void sh_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -179,6 +192,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = sh_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/tilegx/Gapply_reg_state.c libunwind-1.8.1/src/tilegx/Gapply_reg_state.c --- libunwind-1.7.2/src/tilegx/Gapply_reg_state.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Gapply_reg_state.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (c) 2002-2003 Hewlett-Packard Development Company, L.P. - Contributed by David Mosberger-Tang - - Modified for x86_64 by Max Asbock - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" - -int -unw_apply_reg_state (unw_cursor_t *cursor, - void *reg_states_data) -{ - struct cursor *c = (struct cursor *) cursor; - - return dwarf_apply_reg_state (&c->dwarf, (dwarf_reg_state_t *)reg_states_data); -} diff -Nru libunwind-1.7.2/src/tilegx/Gcreate_addr_space.c libunwind-1.8.1/src/tilegx/Gcreate_addr_space.c --- libunwind-1.7.2/src/tilegx/Gcreate_addr_space.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Gcreate_addr_space.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include - -#include "unwind_i.h" - -unw_addr_space_t -unw_create_addr_space (unw_accessors_t *a, int byte_order) -{ -#ifdef UNW_LOCAL_ONLY - return NULL; -#else - /* - * Tilegx supports only big or little-endian, not weird stuff like - * PDP_ENDIAN. - */ - if (byte_order != 0 && byte_order_is_valid(byte_order) == 0) - return NULL; - - unw_addr_space_t as = malloc (sizeof (*as)); - if (!as) - return NULL; - - memset (as, 0, sizeof (*as)); - - as->acc = *a; - - if (byte_order == 0) - /* use host default: */ - as->big_endian = target_is_big_endian(); - else - as->big_endian = (byte_order == UNW_BIG_ENDIAN); - - as->abi = UNW_TILEGX_ABI_N64; - as->addr_size = 8; - - return as; -#endif -} diff -Nru libunwind-1.7.2/src/tilegx/Gget_proc_info.c libunwind-1.8.1/src/tilegx/Gget_proc_info.c --- libunwind-1.7.2/src/tilegx/Gget_proc_info.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Gget_proc_info.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" - -int -unw_get_proc_info (unw_cursor_t *cursor, unw_proc_info_t *pi) -{ - struct cursor *c = (struct cursor *) cursor; - int ret; - - ret = dwarf_make_proc_info (&c->dwarf); - - if (ret < 0) - { - /* On Tilegx, some routines i.e. _start() etc has no dwarf info. - Just simply mark the end of the frames. */ - memset (pi, 0, sizeof (*pi)); - pi->start_ip = c->dwarf.ip; - pi->end_ip = c->dwarf.ip + 1; - return 0; - } - - *pi = c->dwarf.pi; - return 0; -} diff -Nru libunwind-1.7.2/src/tilegx/Gget_save_loc.c libunwind-1.8.1/src/tilegx/Gget_save_loc.c --- libunwind-1.7.2/src/tilegx/Gget_save_loc.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Gget_save_loc.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" - -int -unw_get_save_loc (unw_cursor_t *cursor, int reg, unw_save_loc_t *sloc) -{ - struct cursor *c = (struct cursor *) cursor; - dwarf_loc_t loc; - - loc = DWARF_NULL_LOC; /* default to "not saved" */ - - if (reg <= UNW_TILEGX_R55) - loc = c->dwarf.loc[reg - UNW_TILEGX_R0]; - else - printf("\nInvalid register!"); - - memset (sloc, 0, sizeof (*sloc)); - - if (DWARF_IS_NULL_LOC (loc)) - { - sloc->type = UNW_SLT_NONE; - return 0; - } - -#if !defined(UNW_LOCAL_ONLY) - if (DWARF_IS_REG_LOC (loc)) - { - sloc->type = UNW_SLT_REG; - sloc->u.regnum = DWARF_GET_LOC (loc); - } - else -#endif - { - sloc->type = UNW_SLT_MEMORY; - sloc->u.addr = DWARF_GET_LOC (loc); - } - return 0; -} diff -Nru libunwind-1.7.2/src/tilegx/Gglobal.c libunwind-1.8.1/src/tilegx/Gglobal.c --- libunwind-1.7.2/src/tilegx/Gglobal.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Gglobal.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" -#include "dwarf_i.h" - -__attribute__((weak)) -pthread_mutex_t tilegx_lock = PTHREAD_MUTEX_INITIALIZER; -HIDDEN atomic_bool tdep_init_done = 0; - -HIDDEN const uint8_t dwarf_to_unw_regnum_map[] = - { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55 - }; - -HIDDEN void -tdep_init (void) -{ - intrmask_t saved_mask; - - sigfillset (&unwi_full_mask); - - lock_acquire (&tilegx_lock, saved_mask); - - if (atomic_load(&tdep_init_done)) - /* another thread else beat us to it... */ - goto out; - - mi_init (); - dwarf_init (); - -#ifndef UNW_REMOTE_ONLY - tilegx_local_addr_space_init (); -#endif - atomic_store(&tdep_init_done, 1); /* signal that we're initialized... */ - - out: - lock_release (&tilegx_lock, saved_mask); -} diff -Nru libunwind-1.7.2/src/tilegx/Ginit.c libunwind-1.8.1/src/tilegx/Ginit.c --- libunwind-1.7.2/src/tilegx/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Ginit.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,166 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include -#include - -#include "unwind_i.h" - -#ifdef UNW_REMOTE_ONLY - -/* unw_local_addr_space is a NULL pointer in this case. */ -unw_addr_space_t unw_local_addr_space; - -#else /* !UNW_REMOTE_ONLY */ - -static struct unw_addr_space local_addr_space; - -unw_addr_space_t unw_local_addr_space = &local_addr_space; - -/* Return the address of the 64-bit slot in UC for REG (even for o32, - where registers are 32-bit, the slots are still 64-bit). */ - -static inline void * -uc_addr (ucontext_t *uc, int reg) -{ - if (reg >= UNW_TILEGX_R0 && reg < UNW_TILEGX_R0 + 56) - return &uc->uc_mcontext.gregs[reg - UNW_TILEGX_R0]; - else if (reg == UNW_TILEGX_PC) - return &uc->uc_mcontext.pc; - else - return NULL; -} - -# ifdef UNW_LOCAL_ONLY - -HIDDEN void * -tdep_uc_addr (ucontext_t *uc, int reg) -{ - char *addr = uc_addr (uc, reg); - return addr; -} - -# endif /* UNW_LOCAL_ONLY */ - -static void -put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) -{ - /* it's a no-op */ -} - -static int -get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) -{ -#ifndef UNW_LOCAL_ONLY -# pragma weak _U_dyn_info_list_addr - if (!_U_dyn_info_list_addr) - return -UNW_ENOINFO; -#endif - // Access the `_U_dyn_info_list` from `LOCAL_ONLY` library, i.e. libunwind.so. - *dyn_info_list_addr = _U_dyn_info_list_addr (); - return 0; -} - -static int -access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, - void *arg) -{ - if ((long long)addr & (sizeof(unw_word_t) - 1)) - return 0; - - if (write) - { - Debug (16, "mem[%llx] <- %llx\n", (long long) addr, (long long) *val); - *(unw_word_t *) (intptr_t) addr = *val; - } - else - { - *val = *(unw_word_t *) (intptr_t) addr; - Debug (16, "mem[%llx] -> %llx\n", (long long) addr, (long long) *val); - } - return 0; -} - -static int -access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write, - void *arg) -{ - unw_word_t *addr; - ucontext_t *uc = arg; - - if (unw_is_fpreg (reg)) - goto badreg; - - Debug (16, "reg = %s\n", unw_regname (reg)); - if (!(addr = uc_addr (uc, reg))) - goto badreg; - - if (write) - { - *(unw_word_t *) (intptr_t) addr = (tilegx_reg_t) *val; - Debug (12, "%s <- %llx\n", unw_regname (reg), (long long) *val); - } - else - { - *val = (tilegx_reg_t) *(unw_word_t *) (intptr_t) addr; - Debug (12, "%s -> %llx\n", unw_regname (reg), (long long) *val); - } - return 0; - - badreg: - Debug (1, "bad register number %u\n", reg); - return -UNW_EBADREG; -} - -static int -get_static_proc_name (unw_addr_space_t as, unw_word_t ip, - char *buf, size_t buf_len, unw_word_t *offp, - void *arg) -{ - return elf_w (get_proc_name) (as, getpid (), ip, buf, buf_len, offp); -} - -__attribute__((weak)) void -tilegx_local_addr_space_init (void) -{ - memset (&local_addr_space, 0, sizeof (local_addr_space)); - local_addr_space.big_endian = target_is_big_endian(); - - local_addr_space.abi = UNW_TILEGX_ABI_N64; - local_addr_space.addr_size = sizeof (void *); - local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; - local_addr_space.acc.find_proc_info = dwarf_find_proc_info; - local_addr_space.acc.put_unwind_info = put_unwind_info; - local_addr_space.acc.get_dyn_info_list_addr = get_dyn_info_list_addr; - local_addr_space.acc.access_mem = access_mem; - local_addr_space.acc.access_reg = access_reg; - local_addr_space.acc.access_fpreg = NULL; - local_addr_space.acc.resume = tilegx_local_resume; - local_addr_space.acc.get_proc_name = get_static_proc_name; - unw_flush_cache (&local_addr_space, 0, 0); -} - -#endif /* !UNW_REMOTE_ONLY */ diff -Nru libunwind-1.7.2/src/tilegx/Ginit_local.c libunwind-1.8.1/src/tilegx/Ginit_local.c --- libunwind-1.7.2/src/tilegx/Ginit_local.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Ginit_local.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" -#include "init.h" - -#ifdef UNW_REMOTE_ONLY - -int -unw_init_local (unw_cursor_t *cursor, ucontext_t *uc) -{ - return -UNW_EINVAL; -} - -#else /* !UNW_REMOTE_ONLY */ - -static int -unw_init_local_common(unw_cursor_t *cursor, ucontext_t *uc, unsigned use_prev_instr) -{ - struct cursor *c = (struct cursor *) cursor; - - if (!atomic_load(&tdep_init_done)) - tdep_init (); - - memset(c, 0, sizeof(unw_cursor_t)); - - Debug (1, "(cursor=%p)\n", c); - - c->dwarf.as = unw_local_addr_space; - - c->dwarf.as_arg = uc; - return common_init (c, use_prev_instr); -} - -int -unw_init_local (unw_cursor_t *cursor, ucontext_t *uc) -{ - return unw_init_local_common(cursor, uc, 1); -} - -int -unw_init_local2 (unw_cursor_t *cursor, ucontext_t *uc, int flag) -{ - if (!flag) - { - return unw_init_local_common(cursor, uc, 1); - } - else if (flag == UNW_INIT_SIGNAL_FRAME) - { - return unw_init_local_common(cursor, uc, 0); - } - else - { - return -UNW_EINVAL; - } -} - -#endif /* !UNW_REMOTE_ONLY */ diff -Nru libunwind-1.7.2/src/tilegx/Ginit_remote.c libunwind-1.8.1/src/tilegx/Ginit_remote.c --- libunwind-1.7.2/src/tilegx/Ginit_remote.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Ginit_remote.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "init.h" -#include "unwind_i.h" - -int -unw_init_remote (unw_cursor_t *cursor, unw_addr_space_t as, void *as_arg) -{ -#ifdef UNW_LOCAL_ONLY - return -UNW_EINVAL; -#else /* !UNW_LOCAL_ONLY */ - struct cursor *c = (struct cursor *) cursor; - - if (!atomic_load(&tdep_init_done)) - tdep_init (); - - Debug (1, "(cursor=%p)\n", c); - - c->dwarf.as = as; - c->dwarf.as_arg = as_arg; - - return common_init (c, 0); -#endif /* !UNW_LOCAL_ONLY */ -} diff -Nru libunwind-1.7.2/src/tilegx/Gis_signal_frame.c libunwind-1.8.1/src/tilegx/Gis_signal_frame.c --- libunwind-1.7.2/src/tilegx/Gis_signal_frame.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Gis_signal_frame.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" -#include -#include "offsets.h" - -#ifdef __linux__ -#include -#include -#else -# error "Only support Linux!" -#endif - -#define MOVELI_R10_RT_SIGRETURN \ - ( 0x000007e051483000ULL | \ - ((unsigned long)__NR_rt_sigreturn << 43) | \ - ((unsigned long)TREG_SYSCALL_NR << 31) ) -#define SWINT1 0x286b180051485000ULL - -int -unw_is_signal_frame (unw_cursor_t *cursor) -{ - struct cursor *c = (struct cursor*) cursor; - unw_word_t w0, w1, ip; - unw_addr_space_t as; - unw_accessors_t *a; - void *arg; - int ret; - - as = c->dwarf.as; - a = unw_get_accessors_int (as); - arg = c->dwarf.as_arg; - - ip = c->dwarf.ip; - - if (!ip || !a->access_mem || (ip & (sizeof(unw_word_t) - 1))) - return 0; - - if ((ret = (*a->access_mem) (as, ip, &w0, 0, arg)) < 0) - return ret; - - if ((ret = (*a->access_mem) (as, ip + 8, &w1, 0, arg)) < 0) - return ret; - - /* Return 1 if the IP points to a RT sigreturn sequence. */ - if (w0 == MOVELI_R10_RT_SIGRETURN && - w1 == SWINT1) - { - return 1; - } - return 0; -} - - -HIDDEN int -tilegx_handle_signal_frame (unw_cursor_t *cursor) -{ - int i; - struct cursor *c = (struct cursor *) cursor; - unw_word_t sc_addr, sp, sp_addr = c->dwarf.cfa; - struct dwarf_loc sp_loc = DWARF_LOC (sp_addr, 0); - int ret; - - if ((ret = dwarf_get (&c->dwarf, sp_loc, &sp)) < 0) - return -UNW_EUNSPEC; - - /* Save the SP and PC to be able to return execution at this point - later in time (unw_resume). */ - c->sigcontext_sp = c->dwarf.cfa; - c->sigcontext_pc = c->dwarf.ip; - - c->sigcontext_addr = sp_addr + sizeof (siginfo_t) + - C_ABI_SAVE_AREA_SIZE; - sc_addr = c->sigcontext_addr + LINUX_UC_MCONTEXT_OFF; - - for (i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) - c->dwarf.loc[i] = DWARF_NULL_LOC; - - /* Update the dwarf cursor. - Set the location of the registers to the corresponding addresses of the - uc_mcontext / sigcontext structure contents. */ - -#define SC_REG_OFFSET(X) (8 * X) - - for (i = UNW_TILEGX_R0; i <= UNW_TILEGX_R55; i++) - { - c->dwarf.loc[i] = DWARF_LOC (sc_addr + SC_REG_OFFSET(i), 0); - } - - /* Set SP/CFA and PC/IP. */ - dwarf_get (&c->dwarf, c->dwarf.loc[UNW_TILEGX_R54], &c->dwarf.cfa); - dwarf_get (&c->dwarf, c->dwarf.loc[UNW_TILEGX_R55], &c->dwarf.ip); - - return 1; -} diff -Nru libunwind-1.7.2/src/tilegx/Greg_states_iterate.c libunwind-1.8.1/src/tilegx/Greg_states_iterate.c --- libunwind-1.7.2/src/tilegx/Greg_states_iterate.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Greg_states_iterate.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (c) 2002-2003 Hewlett-Packard Development Company, L.P. - Contributed by David Mosberger-Tang - - Modified for x86_64 by Max Asbock - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" - -int -unw_reg_states_iterate (unw_cursor_t *cursor, - unw_reg_states_callback cb, void *token) -{ - struct cursor *c = (struct cursor *) cursor; - - return dwarf_reg_states_iterate (&c->dwarf, cb, token); -} diff -Nru libunwind-1.7.2/src/tilegx/Gregs.c libunwind-1.8.1/src/tilegx/Gregs.c --- libunwind-1.7.2/src/tilegx/Gregs.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Gregs.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" - -HIDDEN int -tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, - int write) -{ - dwarf_loc_t loc = DWARF_NULL_LOC; - - if (reg == UNW_TILEGX_R54 && !write) - { - reg = UNW_TILEGX_CFA; - } - - if (reg <= UNW_TILEGX_R55) - loc = c->dwarf.loc[reg - UNW_TILEGX_R0]; - else if (reg == UNW_TILEGX_CFA) - { - if (write) - return -UNW_EREADONLYREG; - *valp = c->dwarf.cfa; - return 0; - } - else - { - Debug (1, "bad register number %u\n", reg); - return -UNW_EBADREG; - } - - if (write) - { - if (ci->dwarf.use_prev_instr == 0) { - if (reg == UNW_TILEGX_PC) - c->dwarf.ip = *valp; /* update the IP cache */ - } - else { - if (reg == UNW_TILEGX_R55) - c->dwarf.ip = *valp; /* update the IP cache */ - } - return dwarf_put (&c->dwarf, loc, *valp); - } - else - return dwarf_get (&c->dwarf, loc, valp); -} - -HIDDEN int -tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, unw_fpreg_t *valp, - int write) -{ - Debug (1, "bad register number %u\n", reg); - return -UNW_EBADREG; -} diff -Nru libunwind-1.7.2/src/tilegx/Gresume.c libunwind-1.8.1/src/tilegx/Gresume.c --- libunwind-1.7.2/src/tilegx/Gresume.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Gresume.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - - -#include "unwind_i.h" -#include "offsets.h" -#include - -#ifndef UNW_REMOTE_ONLY - -HIDDEN inline int -tilegx_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) -{ - int i; - struct cursor *c = (struct cursor *) cursor; - ucontext_t *uc = c->dwarf.as_arg; - - Debug (1, "(cursor=%p\n", c); - - return setcontext(uc); -} - -#endif /* !UNW_REMOTE_ONLY */ - -static inline void -establish_machine_state (struct cursor *c) -{ - unw_addr_space_t as = c->dwarf.as; - void *arg = c->dwarf.as_arg; - unw_fpreg_t fpval; - unw_word_t val; - int reg; - - Debug (8, "copying out cursor state\n"); - - for (reg = 0; reg <= UNW_REG_LAST; ++reg) - { - Debug (16, "copying %s %d\n", unw_regname (reg), reg); - - if (unw_is_fpreg (reg)) - { - Debug (1, "no fp!"); - abort (); - } - else - { - if (tdep_access_reg (c, reg, &val, 0) >= 0) - as->acc.access_reg (as, reg, &val, 1, arg); - } - } -} - -int -unw_resume (unw_cursor_t *cursor) -{ - struct cursor *c = (struct cursor *) cursor; - - Debug (1, "(cursor=%p) ip=0x%lx\n", c, c->dwarf.ip); - - if (!c->dwarf.ip) - { - /* This can happen easily when the frame-chain gets truncated - due to bad or missing unwind-info. */ - Debug (1, "refusing to resume execution at address 0\n"); - return -UNW_EINVAL; - } - - establish_machine_state (c); - - return (*c->dwarf.as->acc.resume) (c->dwarf.as, (unw_cursor_t *) c, - c->dwarf.as_arg); -} diff -Nru libunwind-1.7.2/src/tilegx/Gstep.c libunwind-1.8.1/src/tilegx/Gstep.c --- libunwind-1.7.2/src/tilegx/Gstep.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Gstep.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" -#include "offsets.h" - -int -unw_step (unw_cursor_t *cursor) -{ - struct cursor *c = (struct cursor *) cursor; - int ret; - - Debug (1, "(cursor=%p, ip=0x%016lx, sp=0x%016lx)\n", - c, c->dwarf.ip, c->dwarf.cfa); - - /* Special handling the signal frame. */ - if (unw_is_signal_frame (cursor) > 0) - return tilegx_handle_signal_frame (cursor); - - /* Try DWARF-based unwinding... */ - ret = dwarf_step (&c->dwarf); - - if (unlikely (ret == -UNW_ESTOPUNWIND)) - return ret; - - /* Dwarf unwinding didn't work, stop. */ - if (unlikely (ret < 0)) - return 0; - - return (c->dwarf.ip == 0) ? 0 : 1; -} diff -Nru libunwind-1.7.2/src/tilegx/Lapply_reg_state.c libunwind-1.8.1/src/tilegx/Lapply_reg_state.c --- libunwind-1.7.2/src/tilegx/Lapply_reg_state.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lapply_reg_state.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gapply_reg_state.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Lcreate_addr_space.c libunwind-1.8.1/src/tilegx/Lcreate_addr_space.c --- libunwind-1.7.2/src/tilegx/Lcreate_addr_space.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lcreate_addr_space.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gcreate_addr_space.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Lget_proc_info.c libunwind-1.8.1/src/tilegx/Lget_proc_info.c --- libunwind-1.7.2/src/tilegx/Lget_proc_info.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lget_proc_info.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gget_proc_info.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Lget_save_loc.c libunwind-1.8.1/src/tilegx/Lget_save_loc.c --- libunwind-1.7.2/src/tilegx/Lget_save_loc.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lget_save_loc.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gget_save_loc.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Lglobal.c libunwind-1.8.1/src/tilegx/Lglobal.c --- libunwind-1.7.2/src/tilegx/Lglobal.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lglobal.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gglobal.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Linit.c libunwind-1.8.1/src/tilegx/Linit.c --- libunwind-1.7.2/src/tilegx/Linit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Linit.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Ginit.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Linit_local.c libunwind-1.8.1/src/tilegx/Linit_local.c --- libunwind-1.7.2/src/tilegx/Linit_local.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Linit_local.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Ginit_local.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Linit_remote.c libunwind-1.8.1/src/tilegx/Linit_remote.c --- libunwind-1.7.2/src/tilegx/Linit_remote.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Linit_remote.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Ginit_remote.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Lis_signal_frame.c libunwind-1.8.1/src/tilegx/Lis_signal_frame.c --- libunwind-1.7.2/src/tilegx/Lis_signal_frame.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lis_signal_frame.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gis_signal_frame.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Lreg_states_iterate.c libunwind-1.8.1/src/tilegx/Lreg_states_iterate.c --- libunwind-1.7.2/src/tilegx/Lreg_states_iterate.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lreg_states_iterate.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Greg_states_iterate.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Lregs.c libunwind-1.8.1/src/tilegx/Lregs.c --- libunwind-1.7.2/src/tilegx/Lregs.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lregs.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gregs.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Lresume.c libunwind-1.8.1/src/tilegx/Lresume.c --- libunwind-1.7.2/src/tilegx/Lresume.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lresume.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gresume.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/Lstep.c libunwind-1.8.1/src/tilegx/Lstep.c --- libunwind-1.7.2/src/tilegx/Lstep.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/Lstep.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#define UNW_LOCAL_ONLY -#include -#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) -#include "Gstep.c" -#endif diff -Nru libunwind-1.7.2/src/tilegx/getcontext.S libunwind-1.8.1/src/tilegx/getcontext.S --- libunwind-1.7.2/src/tilegx/getcontext.S 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/getcontext.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "offsets.h" -#include - - .text - # define REG(X) LINUX_UC_MCONTEXT_GREGS + 8 * (X) - .global _Utilegx_getcontext - .type _Utilegx_getcontext, %function - # This is a stub version of getcontext() for TILEGX. -_Utilegx_getcontext: - - diff -Nru libunwind-1.7.2/src/tilegx/init.h libunwind-1.8.1/src/tilegx/init.h --- libunwind-1.7.2/src/tilegx/init.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/init.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" - -static inline int -common_init (struct cursor *c, unsigned use_prev_instr) -{ - int ret, i; - - for (i = 0; i < 56; i++) - c->dwarf.loc[i] = DWARF_REG_LOC (&c->dwarf, UNW_TILEGX_R0 + i); - for (i = 56; i < DWARF_NUM_PRESERVED_REGS; ++i) - c->dwarf.loc[i] = DWARF_NULL_LOC; - - if (use_prev_instr == 0) - ret = dwarf_get (&c->dwarf, DWARF_REG_LOC (&c->dwarf, UNW_TILEGX_PC), - &c->dwarf.ip); - else - ret = dwarf_get (&c->dwarf, DWARF_REG_LOC (&c->dwarf, UNW_TILEGX_R55), - &c->dwarf.ip); - - if (ret < 0) - return ret; - - ret = dwarf_get (&c->dwarf, DWARF_REG_LOC (&c->dwarf, UNW_TILEGX_R54), - &c->dwarf.cfa); - - if (ret < 0) - return ret; - - c->dwarf.args_size = 0; - c->dwarf.stash_frames = 0; - c->dwarf.use_prev_instr = use_prev_instr; - c->dwarf.pi_valid = 0; - c->dwarf.pi_is_dynamic = 0; - c->dwarf.hint = 0; - c->dwarf.prev_rs = 0; - - return 0; -} diff -Nru libunwind-1.7.2/src/tilegx/is_fpreg.c libunwind-1.8.1/src/tilegx/is_fpreg.c --- libunwind-1.7.2/src/tilegx/is_fpreg.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/is_fpreg.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "libunwind_i.h" - -/* TILEGX has no FP. */ - -int -unw_is_fpreg (int regnum) -{ - return 0; -} diff -Nru libunwind-1.7.2/src/tilegx/offsets.h libunwind-1.8.1/src/tilegx/offsets.h --- libunwind-1.7.2/src/tilegx/offsets.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/offsets.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -/* Linux-specific definitions: */ - -/* Define various structure offsets to simplify cross-compilation. */ - -/* Offsets for TILEGX Linux "ucontext_t": */ - -#define LINUX_UC_FLAGS_OFF 0x0 -#define LINUX_UC_LINK_OFF 0x8 -#define LINUX_UC_STACK_OFF 0x10 -#define LINUX_UC_MCONTEXT_OFF 0x28 -#define LINUX_UC_SIGMASK_OFF 0x228 -#define LINUX_UC_MCONTEXT_GREGS 0x28 diff -Nru libunwind-1.7.2/src/tilegx/regname.c libunwind-1.8.1/src/tilegx/regname.c --- libunwind-1.7.2/src/tilegx/regname.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/regname.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - Copyright (C) 2014 Tilera Corp. - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#include "unwind_i.h" - -static const char *regname[] = - { - /* 0. */ - "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - /* 8. */ - "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", - /* 16. */ - "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", - /* 24. */ - "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", - /* 32. */ - "r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39", - /* 40. */ - "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47", - /* 48. */ - "r48", "r49", "r50", "r51", "r52", "r53", "r54", "r55", - /* pc, cfa */ - "pc", "cfa" - }; - -const char * -unw_regname (unw_regnum_t reg) -{ - if (reg < (unw_regnum_t) ARRAY_SIZE (regname)) - return regname[reg]; - else - return "???"; -} diff -Nru libunwind-1.7.2/src/tilegx/siglongjmp.S libunwind-1.8.1/src/tilegx/siglongjmp.S --- libunwind-1.7.2/src/tilegx/siglongjmp.S 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/siglongjmp.S 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ - /* Dummy implementation for now. */ - .globl _UI_siglongjmp_cont - .globl _UI_longjmp_cont - -_UI_siglongjmp_cont: -_UI_longjmp_cont: - jrp lr diff -Nru libunwind-1.7.2/src/tilegx/unwind_i.h libunwind-1.8.1/src/tilegx/unwind_i.h --- libunwind-1.7.2/src/tilegx/unwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/tilegx/unwind_i.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* libunwind - a platform-independent unwind library - Copyright (C) 2008 CodeSourcery - -This file is part of libunwind. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#ifndef unwind_i_h -#define unwind_i_h - -#include -#include - -#include - -#include "libunwind_i.h" - -#define tilegx_local_resume UNW_OBJ(local_resume) -#define tilegx_local_addr_space_init UNW_OBJ(local_addr_space_init) - -extern int tilegx_local_resume (unw_addr_space_t as, - unw_cursor_t *cursor, - void *arg); -#define tilegx_handle_signal_frame UNW_OBJ(handle_signal_frame) -extern int tilegx_handle_signal_frame(unw_cursor_t *cursor); - -extern void tilegx_local_addr_space_init (void); - -#endif /* unwind_i_h */ diff -Nru libunwind-1.7.2/src/x86/Ginit.c libunwind-1.8.1/src/x86/Ginit.c --- libunwind-1.7.2/src/x86/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -74,53 +74,6 @@ return 0; } -/* Cache of already validated addresses */ -#define NLGA 4 -static unw_word_t last_good_addr[NLGA]; -static int lga_victim; - -static int -validate_mem (unw_word_t addr) -{ - int i, victim; -#ifdef HAVE_MINCORE - unsigned char mvec[2]; /* Unaligned access may cross page boundary */ -#endif - size_t len = unw_page_size; - addr = uwn_page_start(addr); - - if (addr == 0) - return -1; - - for (i = 0; i < NLGA; i++) - { - if (last_good_addr[i] && (addr == last_good_addr[i])) - return 0; - } - -#ifdef HAVE_MINCORE - if (mincore ((void *) addr, len, mvec) == -1) -#else - if (msync ((void *) addr, len, MS_ASYNC) == -1) -#endif - return -1; - - victim = lga_victim; - for (i = 0; i < NLGA; i++) { - if (!last_good_addr[victim]) { - last_good_addr[victim++] = addr; - return 0; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - last_good_addr[victim] = addr; - victim = (victim + 1) % NLGA; - lga_victim = victim; - - return 0; -} static int access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, @@ -129,15 +82,18 @@ if (write) { Debug (16, "mem[%x] <- %x\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { /* validate address */ const struct cursor *c = (const struct cursor *)arg; - if (c && c->validate && validate_mem(addr)) - return -1; - *val = *(unw_word_t *) addr; + if (unlikely (c && c->validate) && !unw_address_is_valid (addr, sizeof(unw_word_t))) + { + Debug (16, "mem[%#010lx] -> invalid\n", (long)addr); + return -1; + } + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (16, "mem[%x] -> %x\n", addr, *val); } return 0; @@ -158,12 +114,12 @@ if (write) { - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); Debug (12, "%s <- %x\n", unw_regname (reg), *val); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> %x\n", unw_regname (reg), *val); } return 0; @@ -214,10 +170,23 @@ return _Uelf32_get_proc_name (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return _Uelf32_get_elf_filename (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void x86_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -227,6 +196,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = x86_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/x86/Gos-freebsd.c libunwind-1.8.1/src/x86/Gos-freebsd.c --- libunwind-1.7.2/src/x86/Gos-freebsd.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86/Gos-freebsd.c 2024-02-20 19:54:51.000000000 +0000 @@ -111,6 +111,7 @@ struct sigframe *sf; uintptr_t uc_addr; struct dwarf_loc esp_loc; + int i; sf = (struct sigframe *)c->dwarf.cfa; uc_addr = (uintptr_t)&(sf->sf_uc); @@ -124,7 +125,7 @@ return 0; } - for (i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) + for (int i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) c->dwarf.loc[i] = DWARF_NULL_LOC; c->dwarf.loc[EIP] = DWARF_LOC (uc_addr + FREEBSD_UC_MCONTEXT_EIP_OFF, 0); diff -Nru libunwind-1.7.2/src/x86/Gos-linux.c libunwind-1.8.1/src/x86/Gos-linux.c --- libunwind-1.7.2/src/x86/Gos-linux.c 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/src/x86/Gos-linux.c 2024-02-20 19:54:51.000000000 +0000 @@ -136,6 +136,10 @@ c->dwarf.loc[EIP] = DWARF_LOC (sc_addr + LINUX_SC_EIP_OFF, 0); c->dwarf.loc[ESP] = DWARF_LOC (sc_addr + LINUX_SC_ESP_OFF, 0); + ret = dwarf_get (&c->dwarf, c->dwarf.loc[EIP], &c->dwarf.ip); + ret = dwarf_get (&c->dwarf, c->dwarf.loc[ESP], &c->dwarf.cfa); + c->dwarf.use_prev_instr = 0; + return 0; } @@ -287,49 +291,11 @@ struct cursor *c = (struct cursor *) cursor; ucontext_t *uc = c->uc; - /* Ensure c->pi is up-to-date. On x86, it's relatively common to be - missing DWARF unwind info. We don't want to fail in that case, - because the frame-chain still would let us do a backtrace at - least. */ - dwarf_make_proc_info (&c->dwarf); - - if (unlikely (c->sigcontext_format != X86_SCF_NONE)) - { - struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr; - - Debug (8, "resuming at ip=%x via sigreturn(%p)\n", c->dwarf.ip, sc); + Debug (8, "resuming at ip=%x via setcontext()\n", c->dwarf.ip); #if !defined(__ANDROID__) - x86_sigreturn (sc); + setcontext (uc); #endif - } - else - { - Debug (8, "resuming at ip=%x via setcontext()\n", c->dwarf.ip); -#if !defined(__ANDROID__) - setcontext (uc); -#endif - } return -UNW_EINVAL; } -/* sigreturn() is a no-op on x86 glibc. */ -HIDDEN void -x86_sigreturn (unw_cursor_t *cursor) -{ - struct cursor *c = (struct cursor *) cursor; - struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr; - mcontext_t *sc_mcontext = &((ucontext_t*)sc)->uc_mcontext; - /* Copy in saved uc - all preserved regs are at the start of sigcontext */ - memcpy(sc_mcontext, &c->uc->uc_mcontext, - DWARF_NUM_PRESERVED_REGS * sizeof(unw_word_t)); - - Debug (8, "resuming at ip=%llx via sigreturn(%p)\n", - (unsigned long long) c->dwarf.ip, sc); - __asm__ __volatile__ ("mov %0, %%esp;" - "mov %1, %%eax;" - "syscall" - :: "r"(sc), "i"(SYS_rt_sigreturn) - : "memory"); - abort(); -} #endif diff -Nru libunwind-1.7.2/src/x86/Gstep.c libunwind-1.8.1/src/x86/Gstep.c --- libunwind-1.7.2/src/x86/Gstep.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86/Gstep.c 2024-02-20 19:54:51.000000000 +0000 @@ -31,11 +31,24 @@ { struct cursor *c = (struct cursor *) cursor; int ret, i; + int validate = c->validate; + c->validate = 1; Debug (1, "(cursor=%p, ip=0x%08x)\n", c, (unsigned) c->dwarf.ip); + /* + * Special-case the signal trampoline since on many OS targets it lacks DWARF + * unwind info. + */ + if (unw_is_signal_frame (cursor) > 0) + { + ret = x86_handle_signal_frame(cursor); + return 1; + } + /* Try DWARF-based unwinding... */ ret = dwarf_step (&c->dwarf); + c->validate = validate; if (ret < 0 && ret != -UNW_ENOINFO) { @@ -45,54 +58,40 @@ if (unlikely (ret < 0)) { - /* DWARF failed, let's see if we can follow the frame-chain - or skip over the signal trampoline. */ + /* DWARF failed, let's see if we can follow the frame-chain */ struct dwarf_loc ebp_loc, eip_loc, esp_loc; - /* We could get here because of missing/bad unwind information. - Validate all addresses before dereferencing. */ - c->validate = 1; Debug (13, "dwarf_step() failed (ret=%d), trying frame-chain\n", ret); - if (unw_is_signal_frame (cursor) > 0) + ret = dwarf_get (&c->dwarf, c->dwarf.loc[EBP], &c->dwarf.cfa); + if (ret < 0) { - ret = x86_handle_signal_frame(cursor); - if (ret < 0) - { - Debug (2, "returning 0\n"); - return 0; - } + Debug (2, "returning %d\n", ret); + return ret; } - else + + Debug (13, "[EBP=0x%x] = 0x%x\n", DWARF_GET_LOC (c->dwarf.loc[EBP]), c->dwarf.cfa); + + ebp_loc = DWARF_LOC (c->dwarf.cfa, 0); + esp_loc = DWARF_VAL_LOC (c, c->dwarf.cfa + 8); + eip_loc = DWARF_LOC (c->dwarf.cfa + 4, 0); + c->dwarf.cfa += 8; + + /* + * Mark all registers unsaved, since we don't know where they are saved + * (if at all), except for the EBP and EIP. + */ + for (i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) { - ret = dwarf_get (&c->dwarf, c->dwarf.loc[EBP], &c->dwarf.cfa); - if (ret < 0) - { - Debug (2, "returning %d\n", ret); - return ret; - } - - Debug (13, "[EBP=0x%x] = 0x%x\n", DWARF_GET_LOC (c->dwarf.loc[EBP]), - c->dwarf.cfa); - - ebp_loc = DWARF_LOC (c->dwarf.cfa, 0); - esp_loc = DWARF_VAL_LOC (c, c->dwarf.cfa + 8); - eip_loc = DWARF_LOC (c->dwarf.cfa + 4, 0); - c->dwarf.cfa += 8; - - /* Mark all registers unsaved, since we don't know where - they are saved (if at all), except for the EBP and - EIP. */ - for (i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) - c->dwarf.loc[i] = DWARF_NULL_LOC; - - c->dwarf.loc[EBP] = ebp_loc; - c->dwarf.loc[ESP] = esp_loc; - c->dwarf.loc[EIP] = eip_loc; - c->dwarf.use_prev_instr = 1; + c->dwarf.loc[i] = DWARF_NULL_LOC; } + c->dwarf.loc[EBP] = ebp_loc; + c->dwarf.loc[ESP] = esp_loc; + c->dwarf.loc[EIP] = eip_loc; + c->dwarf.use_prev_instr = 1; + if (!DWARF_IS_NULL_LOC (c->dwarf.loc[EBP])) { ret = dwarf_get (&c->dwarf, c->dwarf.loc[EIP], &c->dwarf.ip); diff -Nru libunwind-1.7.2/src/x86/unwind_i.h libunwind-1.8.1/src/x86/unwind_i.h --- libunwind-1.7.2/src/x86/unwind_i.h 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/src/x86/unwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -52,7 +52,6 @@ #define x86_scratch_loc UNW_OBJ(scratch_loc) #define x86_get_scratch_loc UNW_OBJ(get_scratch_loc) #define x86_r_uc_addr UNW_OBJ(r_uc_addr) -#define x86_sigreturn UNW_OBJ(sigreturn) extern void x86_local_addr_space_init (void); extern int x86_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, @@ -61,7 +60,6 @@ extern dwarf_loc_t x86_get_scratch_loc (struct cursor *c, unw_regnum_t reg); extern void *x86_r_uc_addr (ucontext_t *uc, int reg); -extern void x86_sigreturn (unw_cursor_t *cursor); #define x86_handle_signal_frame UNW_OBJ(handle_signal_frame) extern int x86_handle_signal_frame(unw_cursor_t *cursor); diff -Nru libunwind-1.7.2/src/x86_64/Gcreate_addr_space.c libunwind-1.8.1/src/x86_64/Gcreate_addr_space.c --- libunwind-1.7.2/src/x86_64/Gcreate_addr_space.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gcreate_addr_space.c 2024-02-20 19:54:51.000000000 +0000 @@ -30,12 +30,8 @@ #include "unwind_i.h" -#if defined(_LITTLE_ENDIAN) && !defined(__LITTLE_ENDIAN) -#define __LITTLE_ENDIAN _LITTLE_ENDIAN -#endif - unw_addr_space_t -unw_create_addr_space (unw_accessors_t *a, int byte_order) +unw_create_addr_space (unw_accessors_t *a UNUSED, int byte_order UNUSED) { #ifdef UNW_LOCAL_ONLY return NULL; @@ -45,7 +41,7 @@ /* * x86_64 supports only little-endian. */ - if (byte_order != 0 && byte_order != __LITTLE_ENDIAN) + if (byte_order != 0 && byte_order != UNW_LITTLE_ENDIAN) return NULL; as = malloc (sizeof (*as)); diff -Nru libunwind-1.7.2/src/x86_64/Gglobal.c libunwind-1.8.1/src/x86_64/Gglobal.c --- libunwind-1.7.2/src/x86_64/Gglobal.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gglobal.c 2024-02-20 19:54:51.000000000 +0000 @@ -94,8 +94,6 @@ dwarf_init (); #ifndef UNW_REMOTE_ONLY - tdep_init_mem_validate (); - x86_64_local_addr_space_init (); #endif atomic_store(&tdep_init_done, 1); /* signal that we're initialized... */ diff -Nru libunwind-1.7.2/src/x86_64/Ginit.c libunwind-1.8.1/src/x86_64/Ginit.c --- libunwind-1.7.2/src/x86_64/Ginit.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Ginit.c 2024-02-20 19:54:51.000000000 +0000 @@ -54,14 +54,14 @@ unw_addr_space_t unw_local_addr_space = &local_addr_space; static void -put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) +put_unwind_info (unw_addr_space_t as UNUSED, unw_proc_info_t *proc_info UNUSED, void *arg UNUSED) { /* it's a no-op */ } static int -get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, - void *arg) +get_dyn_info_list_addr (unw_addr_space_t as UNUSED, unw_word_t *dyn_info_list_addr, + void *arg UNUSED) { #ifndef UNW_LOCAL_ONLY # pragma weak _U_dyn_info_list_addr @@ -73,260 +73,32 @@ return 0; } -static int mem_validate_pipe[2] = {-1, -1}; -#ifdef HAVE_PIPE2 -static inline void -do_pipe2 (int pipefd[2]) -{ - int result UNUSED = pipe2 (pipefd, O_CLOEXEC | O_NONBLOCK); -} -#else -static inline void -set_pipe_flags (int fd) -{ - int fd_flags = fcntl (fd, F_GETFD, 0); - int status_flags = fcntl (fd, F_GETFL, 0); - - fd_flags |= FD_CLOEXEC; - fcntl (fd, F_SETFD, fd_flags); - - status_flags |= O_NONBLOCK; - fcntl (fd, F_SETFL, status_flags); -} - -static inline void -do_pipe2 (int pipefd[2]) -{ - pipe (pipefd); - set_pipe_flags(pipefd[0]); - set_pipe_flags(pipefd[1]); -} -#endif - -static inline void -open_pipe (void) -{ - if (mem_validate_pipe[0] != -1) - close (mem_validate_pipe[0]); - if (mem_validate_pipe[1] != -1) - close (mem_validate_pipe[1]); - - do_pipe2 (mem_validate_pipe); -} - -ALWAYS_INLINE static int -write_validate (void *addr) -{ - int ret = -1; - ssize_t bytes = 0; - - do - { - char buf; - bytes = read (mem_validate_pipe[0], &buf, 1); - } - while ( errno == EINTR ); - - int valid_read = (bytes > 0 || errno == EAGAIN || errno == EWOULDBLOCK); - if (!valid_read) - { - // re-open closed pipe - open_pipe (); - } - - do - { -#ifdef HAVE_SYS_SYSCALL_H - /* use syscall insteadof write() so that ASAN does not complain */ - ret = syscall (SYS_write, mem_validate_pipe[1], addr, 1); -#else - ret = write (mem_validate_pipe[1], addr, 1); -#endif - } - while ( errno == EINTR ); - - return ret; -} - -static int (*mem_validate_func) (void *addr, size_t len); -static int msync_validate (void *addr, size_t len) -{ - if (msync (addr, len, MS_ASYNC) != 0) - { - return -1; - } - - return write_validate (addr); -} - -#ifdef HAVE_MINCORE -static int mincore_validate (void *addr, size_t len) -{ - unsigned char mvec[2]; /* Unaligned access may cross page boundary */ - - /* mincore could fail with EAGAIN but we conservatively return -1 - instead of looping. */ - if (mincore (addr, len, (unsigned char *)mvec) != 0) - { - return -1; - } - - return write_validate (addr); -} -#endif - -/* Initialise memory validation method. On linux kernels <2.6.21, - mincore() returns incorrect value for MAP_PRIVATE mappings, - such as stacks. If mincore() was available at compile time, - check if we can actually use it. If not, use msync() instead. */ -HIDDEN void -tdep_init_mem_validate (void) -{ - open_pipe (); - -#ifdef HAVE_MINCORE - unsigned char present = 1; - size_t len = unw_page_size; - unw_word_t addr = uwn_page_start((unw_word_t)&present); - unsigned char mvec[1]; - int ret; - while ((ret = mincore ((void*)addr, len, (unsigned char *)mvec)) == -1 && - errno == EAGAIN) {} - if (ret == 0) - { - Debug(1, "using mincore to validate memory\n"); - mem_validate_func = mincore_validate; - } - else -#endif - { - Debug(1, "using msync to validate memory\n"); - mem_validate_func = msync_validate; - } -} - -/* Cache of already validated addresses */ -#define NLGA 4 -#if defined(HAVE___CACHE_PER_THREAD) && HAVE___CACHE_PER_THREAD -// thread-local variant -static _Thread_local unw_word_t last_good_addr[NLGA]; -static _Thread_local int lga_victim; - -static int -is_cached_valid_mem(unw_word_t addr) -{ - int i; - for (i = 0; i < NLGA; i++) - { - if (addr == last_good_addr[i]) - return 1; - } - return 0; -} - -static void -cache_valid_mem(unw_word_t addr) -{ - int i, victim; - victim = lga_victim; - for (i = 0; i < NLGA; i++) { - if (last_good_addr[victim] == 0) { - last_good_addr[victim] = addr; - return; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - last_good_addr[victim] = addr; - victim = (victim + 1) % NLGA; - lga_victim = victim; -} - -#else -// global, thread safe variant -static _Atomic unw_word_t last_good_addr[NLGA]; -static _Atomic int lga_victim; - -static int -is_cached_valid_mem(unw_word_t addr) -{ - int i; - for (i = 0; i < NLGA; i++) - { - if (addr == atomic_load(&last_good_addr[i])) - return 1; - } - return 0; -} - -static void -cache_valid_mem(unw_word_t addr) -{ - int i, victim; - victim = atomic_load(&lga_victim); - unw_word_t zero = 0; - for (i = 0; i < NLGA; i++) { - if (atomic_compare_exchange_strong(&last_good_addr[victim], &zero, addr)) { - return; - } - victim = (victim + 1) % NLGA; - } - - /* All slots full. Evict the victim. */ - atomic_store(&last_good_addr[victim], addr); - victim = (victim + 1) % NLGA; - atomic_store(&lga_victim, victim); -} -#endif - -static int -validate_mem (unw_word_t addr) -{ - size_t len = unw_page_size; - addr = uwn_page_start(addr); - - if (addr == 0) - return -1; - - if (is_cached_valid_mem(addr)) - return 0; - - if (mem_validate_func ((void *) addr, len) == -1) - return -1; - - cache_valid_mem(addr); - - return 0; -} - -static int -access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, +access_mem (unw_addr_space_t as UNUSED, unw_word_t addr, unw_word_t *val, int write, void *arg) { if (unlikely (write)) { Debug (16, "mem[%016lx] <- %lx\n", addr, *val); - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); } else { /* validate address */ if (unlikely (AS_ARG_GET_VALIDATE(arg)) - && unlikely (validate_mem (addr))) { + && unlikely (!unw_address_is_valid (addr, sizeof (unw_word_t)))) { Debug (16, "mem[%016lx] -> invalid\n", addr); return -1; } - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (16, "mem[%016lx] -> %lx\n", addr, *val); } return 0; } static int -access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write, +access_reg (unw_addr_space_t as UNUSED, unw_regnum_t reg, unw_word_t *val, int write, void *arg) { unw_word_t *addr; @@ -340,12 +112,12 @@ if (write) { - *(unw_word_t *) addr = *val; + memcpy ((void *) addr, val, sizeof(unw_word_t)); Debug (12, "%s <- 0x%016lx\n", unw_regname (reg), *val); } else { - *val = *(unw_word_t *) addr; + memcpy (val, (void *) addr, sizeof(unw_word_t)); Debug (12, "%s -> 0x%016lx\n", unw_regname (reg), *val); } return 0; @@ -356,7 +128,7 @@ } static int -access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val, +access_fpreg (unw_addr_space_t as UNUSED, unw_regnum_t reg, unw_fpreg_t *val, int write, void *arg) { ucontext_t *uc = AS_ARG_GET_UC_PTR(arg); @@ -391,15 +163,28 @@ static int get_static_proc_name (unw_addr_space_t as, unw_word_t ip, char *buf, size_t buf_len, unw_word_t *offp, - void *arg) + void *arg UNUSED) { return _Uelf64_get_proc_name (as, getpid (), ip, buf, buf_len, offp); } +static int +get_static_elf_filename (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg UNUSED) +{ + return _Uelf64_get_elf_filename (as, getpid (), ip, buf, buf_len, offp); +} + HIDDEN void x86_64_local_addr_space_init (void) { memset (&local_addr_space, 0, sizeof (local_addr_space)); +#ifndef UNW_REMOTE_ONLY +# if defined(HAVE_DL_ITERATE_PHDR) + local_addr_space.iterate_phdr_function = dl_iterate_phdr; +# endif +#endif local_addr_space.caching_policy = UNWI_DEFAULT_CACHING_POLICY; local_addr_space.acc.find_proc_info = dwarf_find_proc_info; local_addr_space.acc.put_unwind_info = put_unwind_info; @@ -409,6 +194,7 @@ local_addr_space.acc.access_fpreg = access_fpreg; local_addr_space.acc.resume = x86_64_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; + local_addr_space.acc.get_elf_filename = get_static_elf_filename; unw_flush_cache (&local_addr_space, 0, 0); } diff -Nru libunwind-1.7.2/src/x86_64/Ginit_remote.c libunwind-1.8.1/src/x86_64/Ginit_remote.c --- libunwind-1.7.2/src/x86_64/Ginit_remote.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Ginit_remote.c 2024-02-20 19:54:51.000000000 +0000 @@ -30,7 +30,7 @@ #include "unwind_i.h" int -unw_init_remote (unw_cursor_t *cursor, unw_addr_space_t as, void *as_arg) +unw_init_remote (unw_cursor_t *cursor UNUSED, unw_addr_space_t as UNUSED, void *as_arg UNUSED) { #ifdef UNW_LOCAL_ONLY return -UNW_EINVAL; diff -Nru libunwind-1.7.2/src/x86_64/Gos-freebsd.c libunwind-1.8.1/src/x86_64/Gos-freebsd.c --- libunwind-1.7.2/src/x86_64/Gos-freebsd.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gos-freebsd.c 2024-02-20 19:54:51.000000000 +0000 @@ -38,7 +38,7 @@ { /* XXXKIB */ struct cursor *c = (struct cursor *) cursor; - unw_word_t w0, w1, w2, b0, ip; + unw_word_t w0, w1, w2, ip; unw_addr_space_t as; unw_accessors_t *a; void *arg; @@ -69,22 +69,9 @@ w2 == 0x0000000000fdebf4) { c->sigcontext_format = X86_64_SCF_FREEBSD_SIGFRAME; - return (c->sigcontext_format); + return (1); } - /* Check if RIP points at standard syscall sequence. -49 89 ca mov %rcx,%r10 -0f 05 syscall - */ - if ((ret = (*a->access_mem) (as, ip - 5, &b0, 0, arg)) < 0) - return (0); - Debug (12, "b0 0x%lx\n", b0); - if ((b0 & 0xffffffffffffff) == 0x050fca89490000 || - (b0 & 0xffffffffff) == 0x050fca8949) - { - c->sigcontext_format = X86_64_SCF_FREEBSD_SYSCALL; - return (c->sigcontext_format); - } - return (X86_64_SCF_NONE); + return (0); } HIDDEN int @@ -131,26 +118,6 @@ return 0; } - else if (c->sigcontext_format == X86_64_SCF_FREEBSD_SYSCALL) - { - c->dwarf.loc[RCX] = c->dwarf.loc[R10]; - /* rsp_loc = DWARF_LOC(c->dwarf.cfa - 8, 0); */ - /* rbp_loc = c->dwarf.loc[RBP]; */ - c->dwarf.loc[RSP] = DWARF_VAL_LOC (c, c->dwarf.cfa + 8); - c->dwarf.loc[RIP] = DWARF_LOC (c->dwarf.cfa, 0); - ret = dwarf_get (&c->dwarf, c->dwarf.loc[RIP], &c->dwarf.ip); - Debug (1, "Frame Chain [RIP=0x%Lx] = 0x%Lx\n", - (unsigned long long) DWARF_GET_LOC (c->dwarf.loc[RIP]), - (unsigned long long) c->dwarf.ip); - if (ret < 0) - { - Debug (2, "returning %d\n", ret); - return ret; - } - c->dwarf.cfa += 8; - c->dwarf.use_prev_instr = 1; - return 1; - } else return -UNW_EBADFRAME; @@ -220,3 +187,50 @@ abort(); } #endif + +HIDDEN int +x86_64_os_step(struct cursor *c) +{ + unw_word_t b0, ip; + unw_addr_space_t as; + unw_accessors_t *a; + void *arg; + int ret; + + as = c->dwarf.as; + a = unw_get_accessors_int (as); + arg = c->dwarf.as_arg; + ip = c->dwarf.ip; + + /* + * Check if RIP points at standard syscall sequence. + * 49 89 ca mov %rcx,%r10 + * 0f 05 syscall + */ + if ((ret = (*a->access_mem) (as, ip - 5, &b0, 0, arg)) < 0) + return (0); + Debug (12, "b0 0x%lx\n", b0); + if ((b0 & 0xffffffffffffff) == 0x050fca89490000 || + (b0 & 0xffffffffff) == 0x050fca8949) + { + c->sigcontext_format = X86_64_SCF_FREEBSD_SYSCALL; + c->dwarf.loc[RCX] = c->dwarf.loc[R10]; + /* rsp_loc = DWARF_LOC(c->dwarf.cfa - 8, 0); */ + /* rbp_loc = c->dwarf.loc[RBP]; */ + c->dwarf.loc[RSP] = DWARF_VAL_LOC (c, c->dwarf.cfa + 8); + c->dwarf.loc[RIP] = DWARF_LOC (c->dwarf.cfa, 0); + ret = dwarf_get (&c->dwarf, c->dwarf.loc[RIP], &c->dwarf.ip); + Debug (1, "Frame Chain [RIP=0x%Lx] = 0x%Lx\n", + (unsigned long long) DWARF_GET_LOC (c->dwarf.loc[RIP]), + (unsigned long long) c->dwarf.ip); + if (ret < 0) + { + Debug (2, "returning %d\n", ret); + return ret; + } + c->dwarf.cfa += 8; + c->dwarf.use_prev_instr = 1; + return 1; + } + return (0); +} diff -Nru libunwind-1.7.2/src/x86_64/Gos-linux.c libunwind-1.8.1/src/x86_64/Gos-linux.c --- libunwind-1.7.2/src/x86_64/Gos-linux.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gos-linux.c 2024-02-20 19:54:51.000000000 +0000 @@ -25,6 +25,10 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#ifdef HAVE_ASM_VSYSCALL_H +#include +#endif + #include "libunwind_i.h" #include "unwind_i.h" #include "ucontext_i.h" @@ -32,7 +36,7 @@ #include HIDDEN void -tdep_fetch_frame (struct dwarf_cursor *dw, unw_word_t ip, int need_unwind_info) +tdep_fetch_frame (struct dwarf_cursor *dw, unw_word_t ip UNUSED, int need_unwind_info UNUSED) { struct cursor *c = (struct cursor *) dw; assert(! need_unwind_info || dw->pi_valid); @@ -85,7 +89,7 @@ } HIDDEN int -x86_64_handle_signal_frame (unw_cursor_t *cursor) +x86_64_handle_signal_frame (unw_cursor_t *cursor UNUSED) { #if UNW_DEBUG /* To silence compiler warnings */ /* Should not get here because we now use kernel-provided dwarf @@ -155,3 +159,33 @@ } #endif + +static int +is_vsyscall (struct dwarf_cursor *c UNUSED) +{ +#if defined(VSYSCALL_START) && defined(VSYSCALL_END) + return c->ip >= VSYSCALL_START && c->ip < VSYSCALL_END; +#elif defined(VSYSCALL_ADDR) + /* Linux 3.16 removes `VSYSCALL_START` and `VSYSCALL_END`. Assume + a single page is mapped for vsyscalls. */ + return c->ip >= VSYSCALL_ADDR && c->ip < VSYSCALL_ADDR + unw_page_size; +#else + return 0; +#endif +} + +HIDDEN int +x86_64_os_step(struct cursor *c) +{ + if (is_vsyscall (&c->dwarf)) + { + Debug (2, "in vsyscall region\n"); + c->frame_info.cfa_reg_offset = 8; + c->frame_info.cfa_reg_rsp = -1; + c->frame_info.frame_type = UNW_X86_64_FRAME_GUESSED; + c->dwarf.loc[RIP] = DWARF_LOC (c->dwarf.cfa, 0); + c->dwarf.cfa += 8; + return (1); + } + return (0); +} diff -Nru libunwind-1.7.2/src/x86_64/Gos-qnx.c libunwind-1.8.1/src/x86_64/Gos-qnx.c --- libunwind-1.7.2/src/x86_64/Gos-qnx.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gos-qnx.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,214 @@ +/* + * Copyright 2022, 2023 BlackBerry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#include "config.h" + +#include "unwind_i.h" +#include "ucontext_i.h" +#include + + +/** + * @brief Predicate to check if current IP is a signal trampoline. + * @param[in] cursor The current unwinding state. + * + * This function assumes the IP points to the first instruction after the call + * to the signal handler, and the bytes checked are the opcodes dumped by + * objdump between the call and the syscall that returns from the signal. + * + * This is not 100% robust but it's unlikely any other syscall setup is + * identical. + * + * @returns 0 if it does not detect the current function is a signal trampoline, + * 1 if it detects the trampoline. + */ +int +unw_is_signal_frame (unw_cursor_t *cursor) +{ + const unsigned char sig[] = + { + 0x4c, 0x89, 0xef, // mov %r13,%rdi + 0x49, 0x8b, 0x74, 0x24, 0x30, // mov 0x30(%r12),%rsi + 0x49, 0x8b, 0x54, 0x24, 0x38, // mov 0x38(%r12),%rdx + 0x4d, 0x8b, 0x44, 0x24, 0x48, // mov 0x48(%r12),%r8 + 0x4d, 0x8b, 0x4c, 0x24, 0x50, // mov 0x50(%r12),%r9 + 0x49, 0x8b, 0x5c, 0x24, 0x60, // mov 0x60(%r12),%rbx + 0x49, 0x8b, 0x6c, 0x24, 0x68, // mov 0x68(%r12),%rbp + 0x4d, 0x8b, 0xac, 0x24, 0x88, 0x00, 0x00, 0x00, // mov 0x88(%r12),%r13 + 0x4d, 0x8b, 0xb4, 0x24, 0x90, 0x00, 0x00, 0x00, // mov 0x90(%r12),%r14 + 0x4d, 0x8b, 0xbc, 0x24, 0x98, 0x00, 0x00, 0x00, // mov 0x98(%r12),%r15 + 0x4d, 0x8b, 0xa4, 0x24, 0x80, 0x00, 0x00, 0x00, // mov 0x80(%r12),%r12 + 0x48, 0xc7, 0xc0, 0x1b, 0x00, 0x00, 0x00, // mov $0x1b,%rax + 0x0f, 0x05, // syscall + }; + + struct cursor *c = (struct cursor *) cursor; + unw_addr_space_t as = c->dwarf.as; + unw_accessors_t *a = unw_get_accessors_int (as); + unw_word_t ip = c->dwarf.ip; + int retval = 1; + +#if CONSERVATIVE_CHECKS + int val = 0; + if (c->dwarf.as == unw_local_addr_space) { + val = dwarf_get_validate(&c->dwarf); + dwarf_set_validate(&c->dwarf, 1); + } +#endif + + unw_word_t w = 0; + for (size_t i = 0; i != sizeof(sig)/sizeof(sig[0]); ++i) + { + size_t byte_index = i % sizeof(unw_word_t); + if (0 == byte_index) + { + int ret = a->access_mem (as, ip, &w, 0, c->dwarf.as_arg); + if (ret < 0) + { + retval = 0; + break; + } + ip += sizeof(w); + } + + if (sig[i] != (w&0xff)) + { + retval = 0; + break; + } + w >>= 8; + } + +#if CONSERVATIVE_CHECKS + if (c->dwarf.as == unw_local_addr_space) { + dwarf_set_validate(&c->dwarf, val); + } +#endif + + return retval; +} + + +/** + * @brief Special handling when a signal trampoline is detected + * @param[in] cursor The current unwinding state. + * + * If this is a signal trampoline then %rsp points directly at the kernel + * sighandler info so it's easy to get the ucontext. + * + * @returns < 0 on failure, 0 on success. + */ +HIDDEN int +x86_64_handle_signal_frame (unw_cursor_t *cursor) +{ + struct cursor * c = (struct cursor *) cursor; + unw_addr_space_t as = c->dwarf.as; + unw_accessors_t * a = unw_get_accessors_int (as); + unw_word_t sp = c->dwarf.cfa; + unw_word_t uc_ptr_addr = sp + offsetof(struct _sighandler_info, context); + + ucontext_t *context = NULL; + int ret = a->access_mem (as, uc_ptr_addr, (unw_word_t*)&context, 0, c->dwarf.as_arg); + if (ret < 0) + { + return -UNW_EBADFRAME; + } + Debug(3, "unwind context at %#010lx\n", (long)context); + + for (size_t i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) + { + c->dwarf.loc[i] = DWARF_NULL_LOC; + } + + c->dwarf.loc[RAX] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.rax); + c->dwarf.loc[RDX] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.rdx); + c->dwarf.loc[RCX] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.rcx); + c->dwarf.loc[RBX] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.rbx); + c->dwarf.loc[RSI] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.rsi); + c->dwarf.loc[RDI] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.rdi); + c->dwarf.loc[RBP] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.rbp); + c->dwarf.loc[RSP] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.rsp); + c->dwarf.loc[ R8] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.r8); + c->dwarf.loc[ R9] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.r9); + c->dwarf.loc[R10] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.r10); + c->dwarf.loc[R11] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.r11); + c->dwarf.loc[R12] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.r12); + c->dwarf.loc[R13] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.r13); + c->dwarf.loc[R14] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.r14); + c->dwarf.loc[R15] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.r15); + c->dwarf.loc[RIP] = DWARF_VAL_LOC (&c->dwarf, context->uc_mcontext.cpu.rip); + + dwarf_get (&c->dwarf, c->dwarf.loc[RSP], &c->dwarf.cfa); + dwarf_get (&c->dwarf, c->dwarf.loc[RIP], &c->dwarf.ip); + + return 0; +} + + +#ifndef UNW_REMOTE_ONLY +HIDDEN void * +x86_64_r_uc_addr (ucontext_t *uc, int reg) +{ + void *addr; + + switch (reg) + { + case UNW_X86_64_R8: addr = &uc->uc_mcontext.cpu.r8; break; + case UNW_X86_64_R9: addr = &uc->uc_mcontext.cpu.r9; break; + case UNW_X86_64_R10: addr = &uc->uc_mcontext.cpu.r10; break; + case UNW_X86_64_R11: addr = &uc->uc_mcontext.cpu.r11; break; + case UNW_X86_64_R12: addr = &uc->uc_mcontext.cpu.r12; break; + case UNW_X86_64_R13: addr = &uc->uc_mcontext.cpu.r13; break; + case UNW_X86_64_R14: addr = &uc->uc_mcontext.cpu.r14; break; + case UNW_X86_64_R15: addr = &uc->uc_mcontext.cpu.r15; break; + case UNW_X86_64_RDI: addr = &uc->uc_mcontext.cpu.rdi; break; + case UNW_X86_64_RSI: addr = &uc->uc_mcontext.cpu.rsi; break; + case UNW_X86_64_RBP: addr = &uc->uc_mcontext.cpu.rbp; break; + case UNW_X86_64_RBX: addr = &uc->uc_mcontext.cpu.rbx; break; + case UNW_X86_64_RDX: addr = &uc->uc_mcontext.cpu.rdx; break; + case UNW_X86_64_RAX: addr = &uc->uc_mcontext.cpu.rax; break; + case UNW_X86_64_RCX: addr = &uc->uc_mcontext.cpu.rcx; break; + case UNW_X86_64_RSP: addr = &uc->uc_mcontext.cpu.rsp; break; + case UNW_X86_64_RIP: addr = &uc->uc_mcontext.cpu.rip; break; + + default: + addr = NULL; + } + return addr; +} + +HIDDEN NORETURN void +x86_64_sigreturn (unw_cursor_t *cursor) +{ + Debug(0, "Unsupported function.\n"); + abort(); +} + +#endif + +HIDDEN int +x86_64_os_step(struct cursor *c) +{ + return (0); +} diff -Nru libunwind-1.7.2/src/x86_64/Gos-solaris.c libunwind-1.8.1/src/x86_64/Gos-solaris.c --- libunwind-1.7.2/src/x86_64/Gos-solaris.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gos-solaris.c 2024-02-20 19:54:51.000000000 +0000 @@ -135,3 +135,9 @@ } #endif + +HIDDEN int +x86_64_os_step(struct cursor *c) +{ + return (0); +} diff -Nru libunwind-1.7.2/src/x86_64/Gregs.c libunwind-1.8.1/src/x86_64/Gregs.c --- libunwind-1.7.2/src/x86_64/Gregs.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gregs.c 2024-02-20 19:54:51.000000000 +0000 @@ -131,8 +131,8 @@ } HIDDEN int -tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, unw_fpreg_t *valp, - int write) +tdep_access_fpreg (struct cursor *c UNUSED, unw_regnum_t reg UNUSED, + unw_fpreg_t *valp UNUSED, int write UNUSED) { return -UNW_EBADREG; } diff -Nru libunwind-1.7.2/src/x86_64/Gresume.c libunwind-1.8.1/src/x86_64/Gresume.c --- libunwind-1.7.2/src/x86_64/Gresume.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gresume.c 2024-02-20 19:54:51.000000000 +0000 @@ -28,13 +28,12 @@ #include #include "libunwind_i.h" -#include "offsets.h" #include "unwind_i.h" #ifndef UNW_REMOTE_ONLY HIDDEN inline int -x86_64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) +x86_64_local_resume (unw_addr_space_t as UNUSED, unw_cursor_t *cursor, void *arg UNUSED) { struct cursor *c = (struct cursor *) cursor; ucontext_t *uc = dwarf_get_uc(&c->dwarf); diff -Nru libunwind-1.7.2/src/x86_64/Gstep.c libunwind-1.8.1/src/x86_64/Gstep.c --- libunwind-1.7.2/src/x86_64/Gstep.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gstep.c 2024-02-21 13:39:50.000000000 +0000 @@ -25,10 +25,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#ifdef HAVE_ASM_VSYSCALL_H -#include -#endif - #include "libunwind_i.h" #include "unwind_i.h" #include @@ -57,20 +53,6 @@ return ret; } -static int -is_vsyscall (struct dwarf_cursor *c) -{ -#if defined(VSYSCALL_START) && defined(VSYSCALL_END) - return c->ip >= VSYSCALL_START && c->ip < VSYSCALL_END; -#elif defined(VSYSCALL_ADDR) - /* Linux 3.16 removes `VSYSCALL_START` and `VSYSCALL_END`. Assume - a single page is mapped for vsyscalls. */ - return c->ip >= VSYSCALL_ADDR && c->ip < VSYSCALL_ADDR + sysconf(_SC_PAGESIZE); -#else - return 0; -#endif -} - int unw_step (unw_cursor_t *cursor) { @@ -140,7 +122,15 @@ Debug (13, "dwarf_step() failed (ret=%d), trying frame-chain\n", ret); - if (unw_is_signal_frame (cursor) > 0) + if ((ret = x86_64_os_step (c)) != 0) + { + if (ret < 0) + { + Debug (2, "returning 0\n"); + return 0; + } + } + else if (unw_is_signal_frame (cursor) > 0) { ret = x86_64_handle_signal_frame(cursor); if (ret < 0) @@ -159,15 +149,6 @@ c->dwarf.loc[RIP] = DWARF_LOC (c->dwarf.cfa, 0); c->dwarf.cfa += 8; } - else if (is_vsyscall (&c->dwarf)) - { - Debug (2, "in vsyscall region\n"); - c->frame_info.cfa_reg_offset = 8; - c->frame_info.cfa_reg_rsp = -1; - c->frame_info.frame_type = UNW_X86_64_FRAME_GUESSED; - c->dwarf.loc[RIP] = DWARF_LOC (c->dwarf.cfa, 0); - c->dwarf.cfa += 8; - } else if (DWARF_IS_NULL_LOC (c->dwarf.loc[RBP])) { for (i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i) @@ -220,7 +201,7 @@ Debug (2, "new_ip 0x%lx looks valid\n", new_ip); rip_fixup_success = 1; c->frame_info.cfa_reg_offset = 8; - c->frame_info.cfa_reg_rsp = 1; + c->frame_info.cfa_reg_rsp = -1; c->frame_info.rbp_cfa_offset = -1; c->frame_info.rsp_cfa_offset = -1; c->frame_info.frame_type = UNW_X86_64_FRAME_OTHER; @@ -231,15 +212,19 @@ */ c->dwarf.cfa += 8; /* Optimised x64 binaries don't use RBP it seems? */ - rbp_loc = DWARF_LOC (rbp, 0); - rsp_loc = DWARF_LOC (rsp, 0); + rbp_loc = c->dwarf.loc[RBP]; + rsp_loc = DWARF_VAL_LOC (c, rsp + 8); rip_loc = DWARF_LOC (rsp, 0); } else - Debug (2, "new_ip 0x%lx dwarf_get(&c->dwarf, DWARF_MEM_LOC(c->dwarf, new_ip), ¬_used) != 0\n", new_ip); + { + Debug (2, "new_ip 0x%lx dwarf_get(&c->dwarf, DWARF_MEM_LOC(c->dwarf, new_ip), ¬_used) != 0\n", new_ip); + } } - else + else + { Debug (2, "rsp 0x%lx dwarf_get(&c->dwarf, DWARF_MEM_LOC(c->dwarf, rsp), &new_ip) != 0\n", rsp); + } } /* * If the previous rip we found on the stack didn't look valid fall back diff -Nru libunwind-1.7.2/src/x86_64/Gtrace.c libunwind-1.8.1/src/x86_64/Gtrace.c --- libunwind-1.7.2/src/x86_64/Gtrace.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Gtrace.c 2024-02-20 19:54:51.000000000 +0000 @@ -69,7 +69,7 @@ } tls_cache_destroyed = 1; tls_cache = NULL; - munmap (cache->frames, (1u << cache->log_size) * sizeof(unw_tdep_frame_t)); + mi_munmap (cache->frames, (1u << cache->log_size) * sizeof(unw_tdep_frame_t)); mempool_free (&trace_cache_pool, cache); Debug(5, "freed cache %p\n", cache); } @@ -151,7 +151,7 @@ } Debug(5, "expanded cache from 2^%lu to 2^%lu buckets\n", cache->log_size, new_log_size); - munmap(cache->frames, old_size * sizeof(unw_tdep_frame_t)); + mi_munmap(cache->frames, old_size * sizeof(unw_tdep_frame_t)); cache->frames = new_frames; cache->log_size = new_log_size; cache->used = 0; @@ -406,7 +406,7 @@ int ret; int validate UNUSED = 0; - /* Check input parametres. */ + /* Check input parameters. */ if (unlikely(! cursor || ! buffer || ! size || (maxdepth = *size) <= 0)) return -UNW_EINVAL; @@ -477,6 +477,7 @@ /* Fall thru to standard processing after forcing validation. */ if (d->as == unw_local_addr_space) dwarf_set_validate(d, 1); + FALLTHROUGH; case UNW_X86_64_FRAME_STANDARD: /* Advance standard traceable frame. */ diff -Nru libunwind-1.7.2/src/x86_64/Los-qnx.c libunwind-1.8.1/src/x86_64/Los-qnx.c --- libunwind-1.7.2/src/x86_64/Los-qnx.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/Los-qnx.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,29 @@ +/* + * Copyright 2022 BlackBerry Limited. + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#define UNW_LOCAL_ONLY +#include +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gos-qnx.c" +#endif diff -Nru libunwind-1.7.2/src/x86_64/getcontext.S libunwind-1.8.1/src/x86_64/getcontext.S --- libunwind-1.7.2/src/x86_64/getcontext.S 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/getcontext.S 2024-02-20 19:54:51.000000000 +0000 @@ -88,6 +88,7 @@ movw %gs, UC_MCONTEXT_GS(%rdi) #endif movq $UC_MCONTEXT_MC_LEN_VAL, UC_MCONTEXT_MC_LEN(%rdi) +#elif defined(__QNX__) #else #error Port me #endif diff -Nru libunwind-1.7.2/src/x86_64/is_fpreg.c libunwind-1.8.1/src/x86_64/is_fpreg.c --- libunwind-1.7.2/src/x86_64/is_fpreg.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/is_fpreg.c 2024-02-20 19:54:51.000000000 +0000 @@ -28,7 +28,7 @@ #include "libunwind_i.h" int -unw_is_fpreg (int regnum) +unw_is_fpreg (int regnum UNUSED) { #if 0 return ((regnum >= UNW_X86_ST0 && regnum <= UNW_X86_ST7) diff -Nru libunwind-1.7.2/src/x86_64/offsets.h libunwind-1.8.1/src/x86_64/offsets.h --- libunwind-1.7.2/src/x86_64/offsets.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/offsets.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -/* FreeBSD specific definitions */ - -#define FREEBSD_UC_MCONTEXT_OFF 0x10 diff -Nru libunwind-1.7.2/src/x86_64/setcontext.S libunwind-1.8.1/src/x86_64/setcontext.S --- libunwind-1.7.2/src/x86_64/setcontext.S 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/setcontext.S 2024-02-20 19:54:51.000000000 +0000 @@ -54,6 +54,7 @@ jne 1f fxrstor UC_MCONTEXT_FPSTATE(%rdi) 1: +#elif defined (__QNX__) #else #error Port me #endif diff -Nru libunwind-1.7.2/src/x86_64/siglongjmp.S libunwind-1.8.1/src/x86_64/siglongjmp.S --- libunwind-1.7.2/src/x86_64/siglongjmp.S 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/siglongjmp.S 2024-02-20 19:54:51.000000000 +0000 @@ -23,10 +23,28 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#if defined(__FreeBSD__) +#define SIG_SETMASK 3 +#endif + .globl _UI_siglongjmp_cont .type _UI_siglongjmp_cont, @function _UI_siglongjmp_cont: +#if defined(__linux__) || defined(__QNX__) retq +#elif defined(__FreeBSD__) + pushq %rax /* return address */ + pushq %rdx /* return value */ + movq $SIG_SETMASK,%rdi + movq %rcx,%rsi + xorq %rdx,%rdx + movq $340,%rax + syscall + popq %rax /* return value */ + retq /* return address on stack */ +#else +#error Port me +#endif .size _UI_siglongjmp_cont, . - _UI_siglongjmp_cont /* We do not need executable stack. */ .section .note.GNU-stack,"",@progbits diff -Nru libunwind-1.7.2/src/x86_64/ucontext_i.h libunwind-1.8.1/src/x86_64/ucontext_i.h --- libunwind-1.7.2/src/x86_64/ucontext_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/ucontext_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -78,6 +78,25 @@ #define UC_MCONTEXT_FPOWNED_FPU 0x20001 #define UC_MCONTEXT_FPFMT_XMM 0x10002 #define UC_MCONTEXT_MC_LEN_VAL 0x320 +#elif defined(__QNX__) +#define UC_SIGMASK 0x0 +#define UC_MCONTEXT_GREGS_R8 0x48 +#define UC_MCONTEXT_GREGS_R9 0x50 +#define UC_MCONTEXT_GREGS_R10 0x40 +#define UC_MCONTEXT_GREGS_R11 0x78 +#define UC_MCONTEXT_GREGS_R12 0x80 +#define UC_MCONTEXT_GREGS_R13 0x88 +#define UC_MCONTEXT_GREGS_R14 0x90 +#define UC_MCONTEXT_GREGS_R15 0x98 +#define UC_MCONTEXT_GREGS_RDI 0x28 +#define UC_MCONTEXT_GREGS_RSI 0x30 +#define UC_MCONTEXT_GREGS_RBP 0x68 +#define UC_MCONTEXT_GREGS_RBX 0x60 +#define UC_MCONTEXT_GREGS_RDX 0x38 +#define UC_MCONTEXT_GREGS_RAX 0x58 +#define UC_MCONTEXT_GREGS_RCX 0x70 +#define UC_MCONTEXT_GREGS_RSP 0xb8 +#define UC_MCONTEXT_GREGS_RIP 0xa0 #elif defined __sun #define UC_MCONTEXT_GREGS_R8 0x78 #define UC_MCONTEXT_GREGS_R9 0x70 diff -Nru libunwind-1.7.2/src/x86_64/unwind_i.h libunwind-1.8.1/src/x86_64/unwind_i.h --- libunwind-1.7.2/src/x86_64/unwind_i.h 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/src/x86_64/unwind_i.h 2024-02-20 19:54:51.000000000 +0000 @@ -89,5 +89,7 @@ extern NORETURN void x86_64_sigreturn (unw_cursor_t *cursor); #define x86_64_handle_signal_frame UNW_OBJ(handle_signal_frame) extern int x86_64_handle_signal_frame(unw_cursor_t *cursor); +#define x86_64_os_step UNW_OBJ(os_step) +extern HIDDEN int x86_64_os_step(struct cursor *c); #endif /* unwind_i_h */ diff -Nru libunwind-1.7.2/tests/Gperf-simple.c libunwind-1.8.1/tests/Gperf-simple.c --- libunwind-1.7.2/tests/Gperf-simple.c 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/tests/Gperf-simple.c 2024-02-20 19:54:51.000000000 +0000 @@ -38,7 +38,6 @@ long dummy; static long iterations = 10000; -static int maxlevel = 100; #define KB 1024 #define MB (1024*1024) @@ -110,7 +109,7 @@ } static void -doit (const char *label) +doit (const char *label, int maxlevel) { double step, min_step, first_step, sum_step; int i; @@ -232,10 +231,11 @@ int main (int argc, char **argv) { - struct rlimit rlim; - - rlim.rlim_cur = RLIM_INFINITY; - rlim.rlim_max = RLIM_INFINITY; + int maxlevel = 100; + struct rlimit rlim = { + .rlim_cur = RLIM_INFINITY, + .rlim_max = RLIM_INFINITY + }; setrlimit (RLIMIT_STACK, &rlim); memset (big, 0xaa, sizeof (big)); @@ -244,21 +244,21 @@ { maxlevel = atol (argv[1]); if (argc > 2) - iterations = atol (argv[2]); + iterations = atol (argv[2]); } measure_init (); - doit ("default "); + doit ("default ", maxlevel); unw_set_caching_policy (unw_local_addr_space, UNW_CACHE_NONE); - doit ("no cache "); + doit ("no cache ", maxlevel); unw_set_caching_policy (unw_local_addr_space, UNW_CACHE_GLOBAL); - doit ("global cache "); + doit ("global cache ", maxlevel); unw_set_caching_policy (unw_local_addr_space, UNW_CACHE_PER_THREAD); - doit ("per-thread cache"); + doit ("per-thread cache", maxlevel); return 0; } diff -Nru libunwind-1.7.2/tests/Gperf-trace.c libunwind-1.8.1/tests/Gperf-trace.c --- libunwind-1.7.2/tests/Gperf-trace.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Gperf-trace.c 2024-02-20 19:54:51.000000000 +0000 @@ -32,13 +32,12 @@ #include #include -#define panic(args...) \ - do { fprintf (stderr, args); exit (-1); } while (0) +#define panic(...) \ + do { fprintf (stderr, __VA_ARGS__); exit (-1); } while (0) long dummy; static long iterations = 10000; -static int maxlevel = 100; #define KB 1024 #define MB (1024*1024) @@ -96,7 +95,7 @@ } static void -doit (const char *label) +doit (const char *label, int maxlevel) { double step, min_step, first_step, sum_step; int i; @@ -218,10 +217,11 @@ int main (int argc, char **argv) { - struct rlimit rlim; - - rlim.rlim_cur = RLIM_INFINITY; - rlim.rlim_max = RLIM_INFINITY; + int maxlevel = 100; + struct rlimit rlim = { + .rlim_cur = RLIM_INFINITY, + .rlim_max = RLIM_INFINITY + }; setrlimit (RLIMIT_STACK, &rlim); memset (big, 0xaa, sizeof (big)); @@ -230,21 +230,21 @@ { maxlevel = atol (argv[1]); if (argc > 2) - iterations = atol (argv[2]); + iterations = atol (argv[2]); } measure_init (); - doit ("default "); + doit ("default ", maxlevel); unw_set_caching_policy (unw_local_addr_space, UNW_CACHE_NONE); - doit ("no cache "); + doit ("no cache ", maxlevel); unw_set_caching_policy (unw_local_addr_space, UNW_CACHE_GLOBAL); - doit ("global cache "); + doit ("global cache ", maxlevel); unw_set_caching_policy (unw_local_addr_space, UNW_CACHE_PER_THREAD); - doit ("per-thread cache"); + doit ("per-thread cache", maxlevel); return 0; } diff -Nru libunwind-1.7.2/tests/Gtest-bt.c libunwind-1.8.1/tests/Gtest-bt.c --- libunwind-1.7.2/tests/Gtest-bt.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Gtest-bt.c 2024-02-20 19:54:51.000000000 +0000 @@ -38,17 +38,21 @@ #include #include #include +#include #include #include #include -#define panic(args...) \ - { fprintf (stderr, args); exit (-1); } +#include "ident.h" + +#define panic(...) \ + { fprintf (stderr, __VA_ARGS__); exit (-1); } #define SIG_STACK_SIZE 0x100000 int verbose; int num_errors; +sigjmp_buf env; /* These variables are global because they * cause the signal stack to overflow */ @@ -102,6 +106,10 @@ } #endif printf ("\n"); + + name[0] = '\0'; + if (unw_get_elf_filename (&cursor, name, sizeof (name), &off) == UNW_ESUCCESS) + printf ("\t[%s+0x%lx]\n", name, (long) off); } ret = unw_step (&cursor); @@ -137,8 +145,8 @@ void bar (long v) { - extern long f (long); int arr[v]; + arr[0] = 0; /* This is a vain attempt to use up lots of registers to force the frame-chain info to be saved on the memory stack on ia64. @@ -166,7 +174,17 @@ } void -sighandler (int signal, void *siginfo UNUSED, void *context) +segv_handler (int signal, siginfo_t *siginfo UNUSED, void *context UNUSED) +{ + if (verbose) + fprintf (stderr, "segv_handler: got signal %d\n", signal); + + do_backtrace (); + siglongjmp (env, 42); +} + +void +sighandler (int signal, siginfo_t *siginfo UNUSED, void *context) { ucontext_t *uc UNUSED; int sp; @@ -175,7 +193,7 @@ if (verbose) { - printf ("sighandler: got signal %d, sp=%p", signal, &sp); + printf ("sighandler: got signal %d, sp=%p", signal, (void *)&sp); #if UNW_TARGET_IA64 # if defined(__linux__) || defined __sun printf (" @ %lx", uc->uc_mcontext.sc_ip); @@ -202,9 +220,9 @@ printf (" @ %lx", (unsigned long) uc->uc_mcontext.mc_rip); # endif #elif UNW_TARGET_AARCH64 -# if defined(__QNXNTO__) +# if defined(__QNX__) fprintf (stderr, " @ %#010lx", (unsigned long) uc->uc_mcontext.cpu.elr); -# endif /* defined(__QNXNTO__) */ +# endif /* defined(__QNX__) */ #endif printf ("\n"); } @@ -227,8 +245,8 @@ bar (1); memset (&act, 0, sizeof (act)); - act.sa_handler = (void (*)(int)) sighandler; act.sa_flags = SA_SIGINFO; + act.sa_sigaction = sighandler; if (sigaction (SIGTERM, &act, NULL) < 0) panic ("sigaction: %s\n", strerror (errno)); @@ -236,6 +254,20 @@ printf ("\nBacktrace across signal handler:\n"); kill (getpid (), SIGTERM); + if (verbose) + printf ("\nBacktrace across SIGSEGV handler:\n"); + + act.sa_sigaction = segv_handler; + if (sigaction (SIGSEGV, &act, NULL) < 0) + panic ("sigaction: %s\n", strerror (errno)); + + if (sigsetjmp (env, 1) == 0) + { + /* Make a NULL pointer dereference. */ + int *bad_ptr = NULL; + *bad_ptr = 0; + } + #ifdef HAVE_SIGALTSTACK if (verbose) printf ("\nBacktrace across signal handler on alternate stack:\n"); @@ -248,8 +280,8 @@ panic ("sigaltstack: %s\n", strerror (errno)); memset (&act, 0, sizeof (act)); - act.sa_handler = (void (*)(int)) sighandler; act.sa_flags = SA_ONSTACK | SA_SIGINFO; + act.sa_sigaction = sighandler; if (sigaction (SIGTERM, &act, NULL) < 0) panic ("sigaction: %s\n", strerror (errno)); kill (getpid (), SIGTERM); diff -Nru libunwind-1.7.2/tests/Gtest-concurrent.c libunwind-1.8.1/tests/Gtest-concurrent.c --- libunwind-1.7.2/tests/Gtest-concurrent.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Gtest-concurrent.c 2024-02-20 19:54:51.000000000 +0000 @@ -39,8 +39,8 @@ #define NTHREADS 128 -#define panic(args...) \ - do { fprintf (stderr, args); ++nerrors; } while (0) +#define panic(...) \ + do { fprintf (stderr, __VA_ARGS__); ++nerrors; } while (0) int verbose; int nerrors; diff -Nru libunwind-1.7.2/tests/Gtest-exc.c libunwind-1.8.1/tests/Gtest-exc.c --- libunwind-1.7.2/tests/Gtest-exc.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Gtest-exc.c 2024-02-20 19:54:51.000000000 +0000 @@ -40,8 +40,8 @@ # include #endif -#define panic(args...) \ - { ++nerrors; fprintf (stderr, args); } +#define panic(...) \ + { ++nerrors; fprintf (stderr, __VA_ARGS__); } int nerrors = 0; int verbose = 0; @@ -112,7 +112,7 @@ if (verbose) printf ("a(n=%d): sp=%p bsp=0x%lx\n", - n, &stack, (unsigned long) get_bsp ()); + n, (void *)&stack, (unsigned long) get_bsp ()); if (n > 0) a (n - 1); @@ -122,7 +122,7 @@ if (verbose) { printf ("exception handler: here we go (sp=%p, bsp=0x%lx)...\n", - &stack, (unsigned long) get_bsp ()); + (void *)&stack, (unsigned long) get_bsp ()); /* This call works around a bug in gcc (up-to pre3.4) which causes invalid assembly code to be generated when __builtin_ia64_bsp() gets predicated. */ diff -Nru libunwind-1.7.2/tests/Gtest-init.cxx libunwind-1.8.1/tests/Gtest-init.cxx --- libunwind-1.7.2/tests/Gtest-init.cxx 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/tests/Gtest-init.cxx 2024-02-20 19:54:51.000000000 +0000 @@ -49,7 +49,8 @@ do_backtrace (void) { char name[128], off[32]; - unw_word_t ip, offset; + char filename[256]; + unw_word_t ip, offset, file_offset; unw_cursor_t cursor; unw_context_t uc; int ret, count = 0; @@ -63,12 +64,17 @@ name[0] = '\0'; off[0] = '\0'; if (unw_get_proc_name (&cursor, name, sizeof (name), &offset) == 0 - && offset > 0) - snprintf (off, sizeof (off), "+0x%lx", (long) offset); + && offset > 0) + snprintf (off, sizeof (off), "+0x%lx", (long) offset); if (verbose) - printf (" [%lx] <%s%s>\n", (long) ip, name, off); + printf (" [%lx] <%s%s>\n", (long) ip, name, off); + + if (unw_get_elf_filename (&cursor, filename, sizeof (filename), &file_offset) == 0) + if (verbose) + printf (" [%s+0x%lx]\n", filename, (long) file_offset); + if (++count > 32) - panic ("FAILURE: didn't reach beginning of unwind-chain\n"); + panic ("FAILURE: didn't reach beginning of unwind-chain\n"); } while ((ret = unw_step (&cursor)) > 0); diff -Nru libunwind-1.7.2/tests/Gtest-resume-sig.c libunwind-1.8.1/tests/Gtest-resume-sig.c --- libunwind-1.7.2/tests/Gtest-resume-sig.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Gtest-resume-sig.c 2024-02-20 19:54:51.000000000 +0000 @@ -41,8 +41,8 @@ # include #endif -#define panic(args...) \ - do { fprintf (stderr, args); ++nerrors; } while (0) +#define panic(...) \ + do { fprintf (stderr, __VA_ARGS__); ++nerrors; } while (0) int verbose; int nerrors; @@ -119,11 +119,6 @@ if ((ret = unw_step (&c)) < 0) /* step to kill() */ panic ("unw_step(2) failed: ret=%d\n", ret); -#if defined(UNW_TARGET_TILEGX) - if ((ret = unw_step (&c)) < 0) /* step to signal trampoline */ - panic ("unw_step(2) failed: ret=%d\n", ret); -#endif - if ((ret = unw_get_reg (&c, UNW_REG_IP, &ip)) < 0) panic ("unw_get_reg(IP) failed: ret=%d\n", ret); if (verbose) diff -Nru libunwind-1.7.2/tests/Gtest-trace.c libunwind-1.8.1/tests/Gtest-trace.c --- libunwind-1.7.2/tests/Gtest-trace.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Gtest-trace.c 2024-02-20 19:54:51.000000000 +0000 @@ -40,8 +40,10 @@ #include #include -#define panic(args...) \ - { fprintf (stderr, args); exit (-1); } +#include "ident.h" + +#define panic(...) \ + { fprintf (stderr, __VA_ARGS__); exit (-1); } #define SIG_STACK_SIZE 0x100000 @@ -80,7 +82,7 @@ if (ret < 0) { unw_get_reg (&cursor, UNW_REG_IP, &ip); - printf ("FAILURE: unw_step() returned %d for ip=%lx\n", ret, (long) ip); + printf ("FAILURE: unw_step() returned %d for ip=%#010lx\n", ret, (long) ip); ++num_errors; } @@ -121,7 +123,7 @@ if (n == m) for (i = 1; i < n; ++i) /* Allow one in difference in comparison, trace returns adjusted addresses. */ - if (labs((unw_word_t) addresses[1][i] - (unw_word_t) addresses[2][i]) > 1) + if (labs (addresses[1][i] - addresses[2][i]) > 1) { printf ("FAILURE: backtrace() and unw_backtrace() addresses differ at %d: %p vs. %p\n", i, addresses[1][i], addresses[2][i]); @@ -131,7 +133,7 @@ if (n == depth+1) for (i = 1; i < depth; ++i) /* Allow one in difference in comparison, trace returns adjusted addresses. */ - if (labs((unw_word_t) addresses[0][i] - (unw_word_t) addresses[1][i]) > 1) + if (labs (addresses[0][i] - addresses[1][i]) > 1) { printf ("FAILURE: unw_step() loop and backtrace() addresses differ at %d: %p vs. %p\n", i, addresses[0][i], addresses[1][i]); @@ -163,7 +165,7 @@ if (ret < 0) { unw_get_reg (&cursor, UNW_REG_IP, &ip); - printf ("FAILURE: unw_step() returned %d for ip=%lx\n", ret, (long) ip); + printf ("FAILURE: unw_step() returned %d for ip=%#010lx\n", ret, (long) ip); ++num_errors; } @@ -189,9 +191,9 @@ if (m == depth + 1) for (i = 0; i < depth; ++i) /* Allow one in difference in comparison, trace returns adjusted addresses. */ - if (labs((unw_word_t) addresses[0][i] - (unw_word_t) addresses[1][i]) > 1) + if ( labs(addresses[0][i] - addresses[1][i]) > 1) { - printf ("FAILURE: unw_step() loop and uwn_backtrace2() addresses differ at %d: %p vs. %p\n", + printf ("FAILURE: unw_step() loop and unw_backtrace2() addresses differ at %d: %p vs. %p\n", i, addresses[0][i], addresses[1][i]); ++num_errors; } @@ -206,8 +208,8 @@ void bar (long v) { - extern long f (long); int arr[v]; + arr[0] = 0; /* This is a vain attempt to use up lots of registers to force the frame-chain info to be saved on the memory stack on ia64. @@ -235,7 +237,7 @@ } void -sighandler (int signal, void *siginfo UNUSED, void *context) +sighandler (int signal, siginfo_t *siginfo UNUSED, void *context) { ucontext_t *uc UNUSED; int sp; @@ -244,10 +246,10 @@ if (verbose) { - printf ("sighandler: got signal %d, sp=%p", signal, &sp); + printf ("sighandler: got signal %d, sp=%p", signal, (void *)&sp); #if UNW_TARGET_IA64 # if defined(__linux__) - printf (" @ %lx", uc->uc_mcontext.sc_ip); + printf (" @ %#010lx", uc->uc_mcontext.sc_ip); # else { uint16_t reason; @@ -255,26 +257,26 @@ __uc_get_reason (uc, &reason); __uc_get_ip (uc, &ip); - printf (" @ %lx (reason=%d)", ip, reason); + printf (" @ %#010lx (reason=%d)", ip, reason); } # endif #elif UNW_TARGET_X86 #if defined __linux__ - printf (" @ %lx", (unsigned long) uc->uc_mcontext.gregs[REG_EIP]); + printf (" @ %#010lx", (unsigned long) uc->uc_mcontext.gregs[REG_EIP]); #elif defined __FreeBSD__ - printf (" @ %lx", (unsigned long) uc->uc_mcontext.mc_eip); + printf (" @ %#010lx", (unsigned long) uc->uc_mcontext.mc_eip); #endif #elif UNW_TARGET_X86_64 #if defined __linux__ || defined __sun - printf (" @ %lx", (unsigned long) uc->uc_mcontext.gregs[REG_RIP]); + printf (" @ %#010lx", (unsigned long) uc->uc_mcontext.gregs[REG_RIP]); #elif defined __FreeBSD__ - printf (" @ %lx", (unsigned long) uc->uc_mcontext.mc_rip); + printf (" @ %#010lx", (unsigned long) uc->uc_mcontext.mc_rip); #endif #elif defined UNW_TARGET_ARM #if defined __linux__ - printf (" @ %lx", (unsigned long) uc->uc_mcontext.arm_pc); + printf (" @ %#010lx", (unsigned long) uc->uc_mcontext.arm_pc); #elif defined __FreeBSD__ - printf (" @ %lx", (unsigned long) uc->uc_mcontext.__gregs[_REG_PC]); + printf (" @ %#010lx", (unsigned long) uc->uc_mcontext.__gregs[_REG_PC]); #endif #endif printf ("\n"); @@ -299,7 +301,7 @@ bar (1); memset (&act, 0, sizeof (act)); - act.sa_handler = (void (*)(int)) sighandler; + act.sa_sigaction = sighandler; act.sa_flags = SA_SIGINFO; if (sigaction (SIGTERM, &act, NULL) < 0) panic ("sigaction: %s\n", strerror (errno)); @@ -320,7 +322,7 @@ panic ("sigaltstack: %s\n", strerror (errno)); memset (&act, 0, sizeof (act)); - act.sa_handler = (void (*)(int)) sighandler; + act.sa_sigaction = sighandler; act.sa_flags = SA_ONSTACK | SA_SIGINFO; if (sigaction (SIGTERM, &act, NULL) < 0) panic ("sigaction: %s\n", strerror (errno)); diff -Nru libunwind-1.7.2/tests/Gx64-test-dwarf-expressions.c libunwind-1.8.1/tests/Gx64-test-dwarf-expressions.c --- libunwind-1.7.2/tests/Gx64-test-dwarf-expressions.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Gx64-test-dwarf-expressions.c 2024-02-20 19:54:51.000000000 +0000 @@ -3,12 +3,13 @@ #include #include +#include "compiler.h" static int verbose; static int nerrors; -#define panic(args...) \ - do { printf (args); ++nerrors; } while (0) +#define panic(...) \ + do { printf (__VA_ARGS__); ++nerrors; } while (0) // Assembly routine which sets up the stack for the test then calls another one // which clobbers the stack, and which in turn calls recover_register below @@ -46,7 +47,7 @@ } int -main (int argc, char **argv) +main (int argc, char **argv UNUSED) { if (argc > 1) verbose = 1; diff -Nru libunwind-1.7.2/tests/Lrs-race.c libunwind-1.8.1/tests/Lrs-race.c --- libunwind-1.7.2/tests/Lrs-race.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Lrs-race.c 2024-02-20 19:54:51.000000000 +0000 @@ -43,7 +43,7 @@ int verbose; -void +NOINLINE void foo_0 (void) { void *buf[20]; @@ -53,7 +53,7 @@ abort (); } -void +NOINLINE void foo_1 (void) { void *buf[20]; @@ -63,7 +63,7 @@ abort (); } -void +NOINLINE void foo_2 (void) { void *buf[20]; @@ -73,7 +73,7 @@ abort (); } -void +NOINLINE void foo_3 (void) { void *buf[20]; @@ -83,7 +83,7 @@ abort (); } -void +NOINLINE void foo_4 (void) { void *buf[20]; @@ -93,7 +93,7 @@ abort (); } -void +NOINLINE void foo_5 (void) { void *buf[20]; @@ -103,7 +103,7 @@ abort (); } -void +NOINLINE void foo_6 (void) { void *buf[20]; @@ -113,7 +113,7 @@ abort (); } -void +NOINLINE void foo_7 (void) { void *buf[20]; @@ -123,7 +123,7 @@ abort (); } -void +NOINLINE void foo_8 (void) { void *buf[20]; @@ -133,7 +133,7 @@ abort (); } -void +NOINLINE void foo_9 (void) { void *buf[20]; @@ -143,7 +143,7 @@ abort (); } -void +NOINLINE void foo_10 (void) { void *buf[20]; @@ -153,7 +153,7 @@ abort (); } -void +NOINLINE void foo_11 (void) { void *buf[20]; @@ -163,7 +163,7 @@ abort (); } -void +NOINLINE void foo_12 (void) { void *buf[20]; @@ -173,7 +173,7 @@ abort (); } -void +NOINLINE void foo_13 (void) { void *buf[20]; @@ -183,7 +183,7 @@ abort (); } -void +NOINLINE void foo_14 (void) { void *buf[20]; @@ -193,7 +193,7 @@ abort (); } -void +NOINLINE void foo_15 (void) { void *buf[20]; @@ -203,7 +203,7 @@ abort (); } -void +NOINLINE void foo_16 (void) { void *buf[20]; @@ -213,7 +213,7 @@ abort (); } -void +NOINLINE void foo_17 (void) { void *buf[20]; @@ -223,7 +223,7 @@ abort (); } -void +NOINLINE void foo_18 (void) { void *buf[20]; @@ -233,7 +233,7 @@ abort (); } -void +NOINLINE void foo_19 (void) { void *buf[20]; @@ -243,7 +243,7 @@ abort (); } -void +NOINLINE void foo_20 (void) { void *buf[20]; @@ -253,7 +253,7 @@ abort (); } -void +NOINLINE void foo_21 (void) { void *buf[20]; @@ -263,7 +263,7 @@ abort (); } -void +NOINLINE void foo_22 (void) { void *buf[20]; @@ -273,7 +273,7 @@ abort (); } -void +NOINLINE void foo_23 (void) { void *buf[20]; @@ -283,7 +283,7 @@ abort (); } -void +NOINLINE void foo_24 (void) { void *buf[20]; @@ -293,7 +293,7 @@ abort (); } -void +NOINLINE void foo_25 (void) { void *buf[20]; @@ -303,7 +303,7 @@ abort (); } -void +NOINLINE void foo_26 (void) { void *buf[20]; @@ -313,7 +313,7 @@ abort (); } -void +NOINLINE void foo_27 (void) { void *buf[20]; @@ -323,7 +323,7 @@ abort (); } -void +NOINLINE void foo_28 (void) { void *buf[20]; @@ -333,7 +333,7 @@ abort (); } -void +NOINLINE void foo_29 (void) { void *buf[20]; @@ -343,7 +343,7 @@ abort (); } -void +NOINLINE void foo_30 (void) { void *buf[20]; @@ -353,7 +353,7 @@ abort (); } -void +NOINLINE void foo_31 (void) { void *buf[20]; @@ -363,7 +363,7 @@ abort (); } -void +NOINLINE void foo_32 (void) { void *buf[20]; @@ -373,7 +373,7 @@ abort (); } -void +NOINLINE void foo_33 (void) { void *buf[20]; @@ -383,7 +383,7 @@ abort (); } -void +NOINLINE void foo_34 (void) { void *buf[20]; @@ -393,7 +393,7 @@ abort (); } -void +NOINLINE void foo_35 (void) { void *buf[20]; @@ -403,7 +403,7 @@ abort (); } -void +NOINLINE void foo_36 (void) { void *buf[20]; @@ -413,7 +413,7 @@ abort (); } -void +NOINLINE void foo_37 (void) { void *buf[20]; @@ -423,7 +423,7 @@ abort (); } -void +NOINLINE void foo_38 (void) { void *buf[20]; @@ -433,7 +433,7 @@ abort (); } -void +NOINLINE void foo_39 (void) { void *buf[20]; @@ -443,7 +443,7 @@ abort (); } -void +NOINLINE void foo_40 (void) { void *buf[20]; @@ -453,7 +453,7 @@ abort (); } -void +NOINLINE void foo_41 (void) { void *buf[20]; @@ -463,7 +463,7 @@ abort (); } -void +NOINLINE void foo_42 (void) { void *buf[20]; @@ -473,7 +473,7 @@ abort (); } -void +NOINLINE void foo_43 (void) { void *buf[20]; @@ -483,7 +483,7 @@ abort (); } -void +NOINLINE void foo_44 (void) { void *buf[20]; @@ -493,7 +493,7 @@ abort (); } -void +NOINLINE void foo_45 (void) { void *buf[20]; @@ -503,7 +503,7 @@ abort (); } -void +NOINLINE void foo_46 (void) { void *buf[20]; @@ -513,7 +513,7 @@ abort (); } -void +NOINLINE void foo_47 (void) { void *buf[20]; @@ -523,7 +523,7 @@ abort (); } -void +NOINLINE void foo_48 (void) { void *buf[20]; @@ -533,7 +533,7 @@ abort (); } -void +NOINLINE void foo_49 (void) { void *buf[20]; @@ -543,7 +543,7 @@ abort (); } -void +NOINLINE void foo_50 (void) { void *buf[20]; @@ -553,7 +553,7 @@ abort (); } -void +NOINLINE void foo_51 (void) { void *buf[20]; @@ -563,7 +563,7 @@ abort (); } -void +NOINLINE void foo_52 (void) { void *buf[20]; @@ -573,7 +573,7 @@ abort (); } -void +NOINLINE void foo_53 (void) { void *buf[20]; @@ -583,7 +583,7 @@ abort (); } -void +NOINLINE void foo_54 (void) { void *buf[20]; @@ -593,7 +593,7 @@ abort (); } -void +NOINLINE void foo_55 (void) { void *buf[20]; @@ -603,7 +603,7 @@ abort (); } -void +NOINLINE void foo_56 (void) { void *buf[20]; @@ -613,7 +613,7 @@ abort (); } -void +NOINLINE void foo_57 (void) { void *buf[20]; @@ -623,7 +623,7 @@ abort (); } -void +NOINLINE void foo_58 (void) { void *buf[20]; @@ -633,7 +633,7 @@ abort (); } -void +NOINLINE void foo_59 (void) { void *buf[20]; @@ -643,7 +643,7 @@ abort (); } -void +NOINLINE void foo_60 (void) { void *buf[20]; @@ -653,7 +653,7 @@ abort (); } -void +NOINLINE void foo_61 (void) { void *buf[20]; @@ -663,7 +663,7 @@ abort (); } -void +NOINLINE void foo_62 (void) { void *buf[20]; @@ -673,7 +673,7 @@ abort (); } -void +NOINLINE void foo_63 (void) { void *buf[20]; @@ -683,7 +683,7 @@ abort (); } -void +NOINLINE void foo_64 (void) { void *buf[20]; @@ -693,7 +693,7 @@ abort (); } -void +NOINLINE void foo_65 (void) { void *buf[20]; @@ -703,7 +703,7 @@ abort (); } -void +NOINLINE void foo_66 (void) { void *buf[20]; @@ -713,7 +713,7 @@ abort (); } -void +NOINLINE void foo_67 (void) { void *buf[20]; @@ -723,7 +723,7 @@ abort (); } -void +NOINLINE void foo_68 (void) { void *buf[20]; @@ -733,7 +733,7 @@ abort (); } -void +NOINLINE void foo_69 (void) { void *buf[20]; @@ -743,7 +743,7 @@ abort (); } -void +NOINLINE void foo_70 (void) { void *buf[20]; @@ -753,7 +753,7 @@ abort (); } -void +NOINLINE void foo_71 (void) { void *buf[20]; @@ -763,7 +763,7 @@ abort (); } -void +NOINLINE void foo_72 (void) { void *buf[20]; @@ -773,7 +773,7 @@ abort (); } -void +NOINLINE void foo_73 (void) { void *buf[20]; @@ -783,7 +783,7 @@ abort (); } -void +NOINLINE void foo_74 (void) { void *buf[20]; @@ -793,7 +793,7 @@ abort (); } -void +NOINLINE void foo_75 (void) { void *buf[20]; @@ -803,7 +803,7 @@ abort (); } -void +NOINLINE void foo_76 (void) { void *buf[20]; @@ -813,7 +813,7 @@ abort (); } -void +NOINLINE void foo_77 (void) { void *buf[20]; @@ -823,7 +823,7 @@ abort (); } -void +NOINLINE void foo_78 (void) { void *buf[20]; @@ -833,7 +833,7 @@ abort (); } -void +NOINLINE void foo_79 (void) { void *buf[20]; @@ -843,7 +843,7 @@ abort (); } -void +NOINLINE void foo_80 (void) { void *buf[20]; @@ -853,7 +853,7 @@ abort (); } -void +NOINLINE void foo_81 (void) { void *buf[20]; @@ -863,7 +863,7 @@ abort (); } -void +NOINLINE void foo_82 (void) { void *buf[20]; @@ -873,7 +873,7 @@ abort (); } -void +NOINLINE void foo_83 (void) { void *buf[20]; @@ -883,7 +883,7 @@ abort (); } -void +NOINLINE void foo_84 (void) { void *buf[20]; @@ -893,7 +893,7 @@ abort (); } -void +NOINLINE void foo_85 (void) { void *buf[20]; @@ -903,7 +903,7 @@ abort (); } -void +NOINLINE void foo_86 (void) { void *buf[20]; @@ -913,7 +913,7 @@ abort (); } -void +NOINLINE void foo_87 (void) { void *buf[20]; @@ -923,7 +923,7 @@ abort (); } -void +NOINLINE void foo_88 (void) { void *buf[20]; @@ -933,7 +933,7 @@ abort (); } -void +NOINLINE void foo_89 (void) { void *buf[20]; @@ -943,7 +943,7 @@ abort (); } -void +NOINLINE void foo_90 (void) { void *buf[20]; @@ -953,7 +953,7 @@ abort (); } -void +NOINLINE void foo_91 (void) { void *buf[20]; @@ -963,7 +963,7 @@ abort (); } -void +NOINLINE void foo_92 (void) { void *buf[20]; @@ -973,7 +973,7 @@ abort (); } -void +NOINLINE void foo_93 (void) { void *buf[20]; @@ -983,7 +983,7 @@ abort (); } -void +NOINLINE void foo_94 (void) { void *buf[20]; @@ -993,7 +993,7 @@ abort (); } -void +NOINLINE void foo_95 (void) { void *buf[20]; @@ -1003,7 +1003,7 @@ abort (); } -void +NOINLINE void foo_96 (void) { void *buf[20]; @@ -1013,7 +1013,7 @@ abort (); } -void +NOINLINE void foo_97 (void) { void *buf[20]; @@ -1023,7 +1023,7 @@ abort (); } -void +NOINLINE void foo_98 (void) { void *buf[20]; @@ -1033,7 +1033,7 @@ abort (); } -void +NOINLINE void foo_99 (void) { void *buf[20]; @@ -1043,7 +1043,7 @@ abort (); } -void +NOINLINE void foo_100 (void) { void *buf[20]; @@ -1053,7 +1053,7 @@ abort (); } -void +NOINLINE void foo_101 (void) { void *buf[20]; @@ -1063,7 +1063,7 @@ abort (); } -void +NOINLINE void foo_102 (void) { void *buf[20]; @@ -1073,7 +1073,7 @@ abort (); } -void +NOINLINE void foo_103 (void) { void *buf[20]; @@ -1083,7 +1083,7 @@ abort (); } -void +NOINLINE void foo_104 (void) { void *buf[20]; @@ -1093,7 +1093,7 @@ abort (); } -void +NOINLINE void foo_105 (void) { void *buf[20]; @@ -1103,7 +1103,7 @@ abort (); } -void +NOINLINE void foo_106 (void) { void *buf[20]; @@ -1113,7 +1113,7 @@ abort (); } -void +NOINLINE void foo_107 (void) { void *buf[20]; @@ -1123,7 +1123,7 @@ abort (); } -void +NOINLINE void foo_108 (void) { void *buf[20]; @@ -1133,7 +1133,7 @@ abort (); } -void +NOINLINE void foo_109 (void) { void *buf[20]; @@ -1143,7 +1143,7 @@ abort (); } -void +NOINLINE void foo_110 (void) { void *buf[20]; @@ -1153,7 +1153,7 @@ abort (); } -void +NOINLINE void foo_111 (void) { void *buf[20]; @@ -1163,7 +1163,7 @@ abort (); } -void +NOINLINE void foo_112 (void) { void *buf[20]; @@ -1173,7 +1173,7 @@ abort (); } -void +NOINLINE void foo_113 (void) { void *buf[20]; @@ -1183,7 +1183,7 @@ abort (); } -void +NOINLINE void foo_114 (void) { void *buf[20]; @@ -1193,7 +1193,7 @@ abort (); } -void +NOINLINE void foo_115 (void) { void *buf[20]; @@ -1203,7 +1203,7 @@ abort (); } -void +NOINLINE void foo_116 (void) { void *buf[20]; @@ -1213,7 +1213,7 @@ abort (); } -void +NOINLINE void foo_117 (void) { void *buf[20]; @@ -1223,7 +1223,7 @@ abort (); } -void +NOINLINE void foo_118 (void) { void *buf[20]; @@ -1233,7 +1233,7 @@ abort (); } -void +NOINLINE void foo_119 (void) { void *buf[20]; @@ -1243,7 +1243,7 @@ abort (); } -void +NOINLINE void foo_120 (void) { void *buf[20]; @@ -1253,7 +1253,7 @@ abort (); } -void +NOINLINE void foo_121 (void) { void *buf[20]; @@ -1263,7 +1263,7 @@ abort (); } -void +NOINLINE void foo_122 (void) { void *buf[20]; @@ -1273,7 +1273,7 @@ abort (); } -void +NOINLINE void foo_123 (void) { void *buf[20]; @@ -1283,7 +1283,7 @@ abort (); } -void +NOINLINE void foo_124 (void) { void *buf[20]; @@ -1293,7 +1293,7 @@ abort (); } -void +NOINLINE void foo_125 (void) { void *buf[20]; @@ -1303,7 +1303,7 @@ abort (); } -void +NOINLINE void foo_126 (void) { void *buf[20]; @@ -1313,7 +1313,7 @@ abort (); } -void +NOINLINE void foo_127 (void) { void *buf[20]; @@ -1323,7 +1323,7 @@ abort (); } -void +NOINLINE void foo_128 (void) { void *buf[20]; @@ -1333,7 +1333,7 @@ abort (); } -void * +NOINLINE void * bar(void *p UNUSED) { int i; diff -Nru libunwind-1.7.2/tests/Ltest-init-local-signal.c libunwind-1.8.1/tests/Ltest-init-local-signal.c --- libunwind-1.7.2/tests/Ltest-init-local-signal.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Ltest-init-local-signal.c 2024-02-20 19:54:51.000000000 +0000 @@ -1,4 +1,5 @@ #include "libunwind.h" +#include "compiler.h" #include #include #include @@ -9,6 +10,14 @@ #include #include +static const int max_steps = 10; + +#if defined __FreeBSD__ +#define TRAMPOLINE_DEPTH 4 +#else +#define TRAMPOLINE_DEPTH 2 +#endif + int stepper(unw_cursor_t* c) { int steps = 0; int ret = 1; @@ -19,6 +28,7 @@ break; } steps++; + if (steps > max_steps) break; } return steps; } @@ -26,7 +36,7 @@ /* Verify that we can step from both ucontext, and from getcontext() * roughly the same. This tests that the IP from ucontext is used * correctly (see impl of unw_init_local2) */ -void handler(int num, siginfo_t* info, void* ucontext) { +void handler(int num UNUSED, siginfo_t* info UNUSED, void* ucontext) { unw_cursor_t c; unw_context_t context; unw_getcontext(&context); @@ -38,11 +48,11 @@ (void)ret; assert(!ret); int getcontext_steps = stepper(&c); - if (ucontext_steps == getcontext_steps - 2) { + if (ucontext_steps == getcontext_steps - TRAMPOLINE_DEPTH) { exit(0); } printf("unw_getcontext steps was %i, ucontext steps was %i, should be %i\n", - getcontext_steps, ucontext_steps, getcontext_steps - 2); + getcontext_steps, ucontext_steps, getcontext_steps - TRAMPOLINE_DEPTH); exit(-1); } diff -Nru libunwind-1.7.2/tests/Ltest-mem-validate.c libunwind-1.8.1/tests/Ltest-mem-validate.c --- libunwind-1.7.2/tests/Ltest-mem-validate.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Ltest-mem-validate.c 2024-02-20 19:54:51.000000000 +0000 @@ -38,12 +38,14 @@ #include #include -#define panic(args...) \ - { fprintf (stderr, args); exit (-1); } +#define panic(...) \ + { fprintf (stderr, __VA_ARGS__); exit (-1); } void * stack_start; +long page_size; -#define PAGE_SIZE 4096 +#define STEPS 5 +#define STACK_SLICE (sizeof(unw_cursor_t) + sizeof(unw_context_t)) void do_backtrace (void) { @@ -52,8 +54,7 @@ (steps > 5) before touching the forbidden region in the stack, at which point the unwinding should stop gracefully. */ - mprotect((void*)((uintptr_t)stack_start & ~(PAGE_SIZE - 1)), - PAGE_SIZE, PROT_NONE); + mprotect(stack_start, page_size, PROT_NONE); unw_cursor_t cursor; unw_word_t ip, sp; @@ -71,7 +72,7 @@ unw_get_reg (&cursor, UNW_REG_SP, &sp); ret = unw_step (&cursor); - printf("ip=%lx, sp=%lx -> %d\n", ip, sp, ret); + printf("ip=%p, sp=%p -> %d\n", (void *)ip, (void *)sp, ret); if (ret < 0) { unw_get_reg (&cursor, UNW_REG_IP, &ip); @@ -80,24 +81,23 @@ } while (ret > 0); - if (steps < 5) + if (steps < STEPS) { - printf("not enough steps: %d, need 5\n", steps); + printf("not enough steps: %d, need %d\n", steps, STEPS); exit(-1); } printf("success, steps: %d\n", steps); - mprotect((void*)((uintptr_t)stack_start & ~(PAGE_SIZE - 1)), - PAGE_SIZE, PROT_READ|PROT_WRITE); + mprotect(stack_start, page_size, PROT_READ|PROT_WRITE); } void NOINLINE consume_and_run (int depth) { unw_cursor_t cursor; unw_context_t uc; - char string[1024]; + char string[64]; - sprintf (string, "hello %p %p\n", &cursor, &uc); + sprintf (string, "hello %p %p\n", (void *)&cursor, (void *)&uc); if (depth == 0) { do_backtrace(); } else { @@ -105,22 +105,39 @@ } } -int -main (int argc, char **argv UNUSED) +static int NOINLINE is_stack_downward (int *val) { int start; + + return val > &start; +} + +int +main (int argc UNUSED, char **argv UNUSED) +{ + int start, count; unw_context_t uc; unw_cursor_t cursor; - stack_start = &start; - /* - We need to make the frame at least the size protected by - the mprotect call so we are not forbidding access to - unrelated regions. - */ - char string[PAGE_SIZE]; - sprintf (string, "hello\n"); + * We need to make the frame at least the size protected by + * the mprotect call so we are not forbidding access to + * unrelated regions. + * mprotect consume_and_run stack area. + * Check whether stack grows downward or upward. + */ + page_size = sysconf(_SC_PAGESIZE); + if (is_stack_downward(&start)) + { + stack_start = (void *)(((uintptr_t)&start & ~(page_size - 1)) - page_size); + count = (uintptr_t)&start - (uintptr_t)stack_start; + } + else + { + stack_start = (void *)(((uintptr_t)&start & ~(page_size - 1)) + page_size); + count = (uintptr_t)stack_start - (uintptr_t)&start; + } + count = count / STACK_SLICE + STEPS; // Initialize pipe mem validate check, opens file descriptors unw_getcontext(&uc); @@ -149,7 +166,7 @@ } else { - consume_and_run (10); + consume_and_run (count); return 0; } diff -Nru libunwind-1.7.2/tests/Ltest-nocalloc.c libunwind-1.8.1/tests/Ltest-nocalloc.c --- libunwind-1.7.2/tests/Ltest-nocalloc.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Ltest-nocalloc.c 2024-02-20 19:54:51.000000000 +0000 @@ -56,10 +56,8 @@ if (in_unwind) { num_callocs++; - return NULL; - } else { - return func(n, s); } + return func(n, s); } void * @@ -72,10 +70,8 @@ if (in_unwind) { num_mallocs++; - return NULL; - } else { - return func(s); } + return func(s); } static void diff -Nru libunwind-1.7.2/tests/Makefile.am libunwind-1.8.1/tests/Makefile.am --- libunwind-1.7.2/tests/Makefile.am 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/Makefile.am 2024-02-21 13:39:50.000000000 +0000 @@ -1,13 +1,46 @@ -AM_CPPFLAGS = -I$(top_srcdir)/include +## +## tests/Makefile.am +## +## Process this file with **automake** to produce a Makefile.in +## + +# +# This file is part of libunwind. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + +# Test binaries and scripts get installed here +testdir = ${pkglibexecdir} + +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/tdep-$(arch) -I$(top_srcdir)/src AM_CFLAGS = -fno-optimize-sibling-calls LOG_DRIVER = $(SHELL) $(UNW_TESTDRIVER) EXTRA_DIST = run-ia64-test-dyn1 run-ptrace-mapper run-ptrace-misc \ - run-check-namespace run-coredump-unwind \ + run-coredump-unwind \ run-coredump-unwind-mdi check-namespace.sh.in \ + test-runner.in \ Gtest-nomalloc.c +CLEANFILES = test-runner MAINTAINERCLEANFILES = Makefile.in noinst_PROGRAMS_arch = @@ -19,7 +52,9 @@ test-strerror check_SCRIPTS_arch = check_SCRIPTS_cdep = -check_SCRIPTS_common = run-check-namespace +check_SCRIPTS_common = check-namespace.sh + +XFAIL_TESTS = if REMOTE_ONLY @@ -40,6 +75,7 @@ if USE_ALTIVEC noinst_PROGRAMS_arch += ppc64-test-altivec endif #USE_ALTIVEC + check_PROGRAMS_arch += ppc64-test-plt else #!ARCH_PPC64 if ARCH_X86_64 check_PROGRAMS_arch += Gx64-test-dwarf-expressions Lx64-test-dwarf-expressions x64-unwind-badjmp-signal-frame @@ -48,14 +84,13 @@ endif #!ARCH_IA64 if ARCH_AARCH64 - check_PROGRAMS_arch += Garm64-test-sve-signal Larm64-test-sve-signal + check_PROGRAMS_arch += Garm64-test-sve-signal Larm64-test-sve-signal \ + aarch64-test-plt aarch64-test-frame-record endif - check_PROGRAMS_cdep += Gtest-bt Ltest-bt Gtest-exc Ltest-exc \ + check_PROGRAMS_cdep += Gtest-bt Ltest-bt \ Gtest-init Ltest-init \ Gtest-concurrent Ltest-concurrent \ - Gtest-resume-sig Ltest-resume-sig \ - Gtest-resume-sig-rt Ltest-resume-sig-rt \ Gtest-trace Ltest-trace \ Ltest-mem-validate \ test-async-sig test-flush-cache test-init-remote \ @@ -69,10 +104,20 @@ check_PROGRAMS_cdep += Ltest-init-local-signal endif +# Tests that exercise unw_resume, which is only unsupported on some targets +if ENABLE_UNW_RESUME_TESTS +check_PROGRAMS_cdep += Gtest-exc Ltest-exc \ + Gtest-resume-sig Ltest-resume-sig \ + Gtest-resume-sig-rt Ltest-resume-sig-rt +endif + if BUILD_PTRACE check_SCRIPTS_cdep += run-ptrace-mapper run-ptrace-misc check_PROGRAMS_cdep += test-ptrace noinst_PROGRAMS_cdep += mapper test-ptrace-misc +if ARCH_X86 + XFAIL_TESTS += test-ptrace +endif endif if BUILD_SETJMP @@ -82,6 +127,14 @@ if SUPPORT_CXX_EXCEPTIONS check_PROGRAMS_cdep += Ltest-cxx-exceptions endif +if ARCH_PPC32 + # https://github.com/libunwind/libunwind/issues/561 + XFAIL_TESTS += Ltest-cxx-exceptions +endif + +if ARCH_IA64 + check_PROGRAMS_cdep += Gtest-dyn1 Ltest-dyn1 +endif if OS_LINUX if BUILD_COREDUMP @@ -111,12 +164,9 @@ check_SCRIPTS = $(check_SCRIPTS_common) $(check_SCRIPTS_cdep) \ $(check_SCRIPTS_arch) - -TESTS = $(check_PROGRAMS) $(check_SCRIPTS) -XFAIL_TESTS = - -if ARCH_IA64 - check_PROGRAMS_cdep += Gtest-dyn1 Ltest-dyn1 +TESTS = $(check_PROGRAMS) +if !CROSS_BUILD + TESTS += $(check_SCRIPTS) endif # Use if arch defines but does not support PTRACE_SINGLESTEP @@ -143,12 +193,25 @@ # This is meant for multilib binaries, -m32. # ptrace gives EBADREG when testing, # but generally everything else works. -if NO_PTRACE_TEST - XFAIL_TESTS += run-ptrace-mapper test-ptrace Ltest-init-local-signal +if XFAIL_PTRACE_TEST + XFAIL_TESTS += run-ptrace-mapper endif noinst_PROGRAMS = $(noinst_PROGRAMS_common) $(noinst_PROGRAMS_cdep) \ $(noinst_PROGRAMS_arch) +noinst_HEADERS = ident.h + +do_test_subst = sed -e 's,[@]TESTS[@],$(TESTS),g' \ + -e 's,[@]XFAIL_TESTS[@],$(XFAIL_TESTS),g' \ + -e 's,[@]LIBDIR[@],$(libdir),g' \ + -e 's,[@]ARCH[@],$(arch),g' +test-runner: test-runner.in Makefile + $(AM_V_GEN)$(do_test_subst) <$(srcdir)/test-runner.in >$@ + @chmod +x test-runner + +# Make the test binaries installable +test_PROGRAMS = ${check_PROGRAMS} ${noinst_PROGRAMS} +test_SCRIPTS = ${check_SCRIPTS} test-runner Lia64_test_readonly_SOURCES = Lia64-test-readonly.c ia64-test-readonly-asm.S Gia64_test_readonly_SOURCES = Gia64-test-readonly.c ia64-test-readonly-asm.S @@ -163,6 +226,7 @@ ia64_test_dyn1_SOURCES = ia64-test-dyn1.c ia64-dyn-asm.S flush-cache.S \ flush-cache.h ppc64_test_altivec_SOURCES = ppc64-test-altivec.c ppc64-test-altivec-utils.c +ppc64_test_plt_SOURCES = ppc64-test-plt.c Gx64_test_dwarf_expressions_SOURCES = Gx64-test-dwarf-expressions.c \ @@ -172,8 +236,14 @@ Garm64_test_sve_signal_SOURCES = Garm64-test-sve-signal.c Larm64_test_sve_signal_SOURCES = Larm64-test-sve-signal.c -Garm64_test_sve_signal_CFLAGS = -fno-inline -march=native -Larm64_test_sve_signal_CFLAGS = -fno-inline -march=native +aarch64_test_plt_SOURCES = aarch64-test-plt.c +aarch64_test_frame_record_SOURCES = aarch64-test-frame-record.c + +if COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE + Garm64_test_sve_signal_CFLAGS = -fno-inline -march=armv8-a+sve + Larm64_test_sve_signal_CFLAGS = -fno-inline -march=armv8-a+sve +endif +XFAIL_TESTS += Garm64-test-sve-signal Larm64-test-sve-signal Gtest_init_SOURCES = Gtest-init.cxx Ltest_init_SOURCES = Ltest-init.cxx @@ -213,7 +283,7 @@ LIBUNWIND_setjmp = $(top_builddir)/src/libunwind-setjmp.la \ $(LIBUNWIND_ELF) $(LIBUNWIND) -test_async_sig_LDADD = $(LIBUNWIND_local) -lpthread +test_async_sig_LDADD = $(LIBUNWIND_local) $(PTHREADS_LIB) test_flush_cache_LDADD = $(LIBUNWIND_local) test_init_remote_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) test_mem_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) @@ -222,16 +292,16 @@ test_proc_info_LDADD = $(LIBUNWIND) test_static_link_LDADD = $(LIBUNWIND) test_strerror_LDADD = $(LIBUNWIND) -Lrs_race_LDADD = $(LIBUNWIND_local) -lpthread +Lrs_race_LDADD = $(LIBUNWIND_local) $(PTHREADS_LIB) Ltest_varargs_LDADD = $(LIBUNWIND_local) Ltest_init_local_signal_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_bt_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) -Gtest_concurrent_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) -lpthread +Gtest_concurrent_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) $(PTHREADS_LIB) x64_unwind_badjmp_signal_frame_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_dyn1_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_exc_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) -Gtest_init_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) @BACKTRACELIB@ +Gtest_init_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) $(BACKTRACELIB) Gtest_resume_sig_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_resume_sig_rt_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gperf_simple_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) @@ -239,13 +309,13 @@ Gperf_trace_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Ltest_bt_LDADD = $(LIBUNWIND_local) -Ltest_concurrent_LDADD = $(LIBUNWIND_local) -lpthread +Ltest_concurrent_LDADD = $(LIBUNWIND_local) $(PTHREADS_LIB) Ltest_cxx_exceptions_LDADD = $(LIBUNWIND_local) Ltest_dyn1_LDADD = $(LIBUNWIND_local) Ltest_exc_LDADD = $(LIBUNWIND_local) Ltest_init_LDADD = $(LIBUNWIND_local) -Ltest_nomalloc_LDADD = $(LIBUNWIND_local) @DLLIB@ -Ltest_nocalloc_LDADD = $(LIBUNWIND_local) @DLLIB@ -lpthread +Ltest_nomalloc_LDADD = $(LIBUNWIND_local) $(DLLIB) +Ltest_nocalloc_LDADD = $(LIBUNWIND_local) $(DLLIB) $(PTHREADS_LIB) Ltest_resume_sig_LDADD = $(LIBUNWIND_local) Ltest_resume_sig_rt_LDADD = $(LIBUNWIND_local) Lperf_simple_LDADD = $(LIBUNWIND_local) @@ -257,7 +327,7 @@ ia64_test_setjmp_LDADD = $(LIBUNWIND_setjmp) if BUILD_COREDUMP -test_coredump_unwind_LDADD = $(LIBUNWIND_coredump) $(LIBUNWIND) @BACKTRACELIB@ +test_coredump_unwind_LDADD = $(LIBUNWIND_coredump) $(LIBUNWIND) $(BACKTRACELIB) endif Gia64_test_nat_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) @@ -271,9 +341,12 @@ ia64_test_dyn1_LDADD = $(LIBUNWIND) ia64_test_sig_LDADD = $(LIBUNWIND) ppc64_test_altivec_LDADD = $(LIBUNWIND) +ppc64_test_plt_LDADD = $(LIBUNWIND) Gx64_test_dwarf_expressions_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Lx64_test_dwarf_expressions_LDADD = $(LIBUNWIND_local) Garm64_test_sve_signal_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Larm64_test_sve_signal_LDADD = $(LIBUNWIND_local) +aarch64_test_plt_LDADD = $(LIBUNWIND) +aarch64_test_frame_record_LDADD = $(LIBUNWIND) diff -Nru libunwind-1.7.2/tests/Makefile.in libunwind-1.8.1/tests/Makefile.in --- libunwind-1.7.2/tests/Makefile.in 2023-07-30 11:33:11.000000000 +0000 +++ libunwind-1.8.1/tests/Makefile.in 2024-02-22 14:09:14.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. +# Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,6 +14,30 @@ @SET_MAKE@ +# +# This file is part of libunwind. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + + + VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ @@ -89,6 +113,10 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ +XFAIL_TESTS = $(am__EXEEXT_23) $(am__EXEEXT_24) $(am__append_24) \ + $(am__append_25) $(am__append_26) $(am__append_27) \ + $(am__append_28) Garm64-test-sve-signal$(EXEEXT) \ + Larm64-test-sve-signal$(EXEEXT) @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__append_1 = ia64-test-dyn1 @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__append_2 = run-ia64-test-dyn1 @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__append_3 = Gia64-test-stack Lia64-test-stack \ @@ -98,49 +126,58 @@ @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@ ia64-test-setjmp ia64-test-sig @ARCH_IA64_FALSE@@ARCH_PPC64_TRUE@@REMOTE_ONLY_FALSE@@USE_ALTIVEC_TRUE@am__append_4 = ppc64-test-altivec -@ARCH_IA64_FALSE@@ARCH_PPC64_FALSE@@ARCH_X86_64_TRUE@@REMOTE_ONLY_FALSE@am__append_5 = Gx64-test-dwarf-expressions Lx64-test-dwarf-expressions x64-unwind-badjmp-signal-frame -@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@am__append_6 = Garm64-test-sve-signal Larm64-test-sve-signal -@REMOTE_ONLY_FALSE@am__append_7 = Gtest-bt Ltest-bt Gtest-exc Ltest-exc \ +@ARCH_IA64_FALSE@@ARCH_PPC64_TRUE@@REMOTE_ONLY_FALSE@am__append_5 = ppc64-test-plt +@ARCH_IA64_FALSE@@ARCH_PPC64_FALSE@@ARCH_X86_64_TRUE@@REMOTE_ONLY_FALSE@am__append_6 = Gx64-test-dwarf-expressions Lx64-test-dwarf-expressions x64-unwind-badjmp-signal-frame +@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@am__append_7 = Garm64-test-sve-signal Larm64-test-sve-signal \ +@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@ aarch64-test-plt aarch64-test-frame-record + +@REMOTE_ONLY_FALSE@am__append_8 = Gtest-bt Ltest-bt \ @REMOTE_ONLY_FALSE@ Gtest-init Ltest-init \ @REMOTE_ONLY_FALSE@ Gtest-concurrent Ltest-concurrent \ -@REMOTE_ONLY_FALSE@ Gtest-resume-sig Ltest-resume-sig \ -@REMOTE_ONLY_FALSE@ Gtest-resume-sig-rt Ltest-resume-sig-rt \ @REMOTE_ONLY_FALSE@ Gtest-trace Ltest-trace \ @REMOTE_ONLY_FALSE@ Ltest-mem-validate \ @REMOTE_ONLY_FALSE@ test-async-sig test-flush-cache test-init-remote \ @REMOTE_ONLY_FALSE@ test-mem test-reg-state Ltest-varargs \ @REMOTE_ONLY_FALSE@ Ltest-nomalloc Ltest-nocalloc Lrs-race -@REMOTE_ONLY_FALSE@am__append_8 = forker Gperf-simple Lperf-simple \ +@REMOTE_ONLY_FALSE@am__append_9 = forker Gperf-simple Lperf-simple \ @REMOTE_ONLY_FALSE@ Gperf-trace Lperf-trace # unw_init_local2() is not implemented on ia64 -@ARCH_IA64_FALSE@@REMOTE_ONLY_FALSE@am__append_9 = Ltest-init-local-signal -@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__append_10 = run-ptrace-mapper run-ptrace-misc -@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__append_11 = test-ptrace -@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__append_12 = mapper test-ptrace-misc -@BUILD_SETJMP_TRUE@@REMOTE_ONLY_FALSE@am__append_13 = test-setjmp -@REMOTE_ONLY_FALSE@@SUPPORT_CXX_EXCEPTIONS_TRUE@am__append_14 = Ltest-cxx-exceptions -@BUILD_COREDUMP_TRUE@@OS_LINUX_TRUE@@REMOTE_ONLY_FALSE@am__append_15 = run-coredump-unwind -@BUILD_COREDUMP_TRUE@@OS_LINUX_TRUE@@REMOTE_ONLY_FALSE@am__append_16 = crasher test-coredump-unwind -@BUILD_COREDUMP_TRUE@@HAVE_LZMA_TRUE@@OS_LINUX_TRUE@@REMOTE_ONLY_FALSE@am__append_17 = run-coredump-unwind-mdi -check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_8) $(am__EXEEXT_12) -XFAIL_TESTS = $(am__append_19) $(am__append_20) $(am__append_21) \ - $(am__append_22) $(am__EXEEXT_21) -@ARCH_IA64_TRUE@am__append_18 = Gtest-dyn1 Ltest-dyn1 -@ARCH_MIPS_TRUE@am__append_19 = $(XFAIL_TESTS_PTRACE_SINGLESTEP) -@ARCH_RISCV_TRUE@am__append_20 = $(XFAIL_TESTS_PTRACE_SINGLESTEP) +@ARCH_IA64_FALSE@@REMOTE_ONLY_FALSE@am__append_10 = Ltest-init-local-signal + +# Tests that exercise unw_resume, which is only unsupported on some targets +@ENABLE_UNW_RESUME_TESTS_TRUE@@REMOTE_ONLY_FALSE@am__append_11 = Gtest-exc Ltest-exc \ +@ENABLE_UNW_RESUME_TESTS_TRUE@@REMOTE_ONLY_FALSE@ Gtest-resume-sig Ltest-resume-sig \ +@ENABLE_UNW_RESUME_TESTS_TRUE@@REMOTE_ONLY_FALSE@ Gtest-resume-sig-rt Ltest-resume-sig-rt + +@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__append_12 = run-ptrace-mapper run-ptrace-misc +@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__append_13 = test-ptrace +@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__append_14 = mapper test-ptrace-misc +@ARCH_X86_TRUE@@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__append_15 = test-ptrace +@BUILD_SETJMP_TRUE@@REMOTE_ONLY_FALSE@am__append_16 = test-setjmp +@REMOTE_ONLY_FALSE@@SUPPORT_CXX_EXCEPTIONS_TRUE@am__append_17 = Ltest-cxx-exceptions +@ARCH_PPC32_TRUE@@REMOTE_ONLY_FALSE@am__append_18 = Ltest-cxx-exceptions +@ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__append_19 = Gtest-dyn1 Ltest-dyn1 +@BUILD_COREDUMP_TRUE@@OS_LINUX_TRUE@@REMOTE_ONLY_FALSE@am__append_20 = run-coredump-unwind +@BUILD_COREDUMP_TRUE@@OS_LINUX_TRUE@@REMOTE_ONLY_FALSE@am__append_21 = crasher test-coredump-unwind +@BUILD_COREDUMP_TRUE@@HAVE_LZMA_TRUE@@OS_LINUX_TRUE@@REMOTE_ONLY_FALSE@am__append_22 = run-coredump-unwind-mdi +check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_9) $(am__EXEEXT_14) +@CROSS_BUILD_FALSE@am__append_23 = $(check_SCRIPTS) +@ARCH_MIPS_TRUE@am__append_24 = $(XFAIL_TESTS_PTRACE_SINGLESTEP) +@ARCH_RISCV_TRUE@am__append_25 = $(XFAIL_TESTS_PTRACE_SINGLESTEP) # ARM Linux kernel >=2.6.39 removed PTRACE_SINGLESTEP emulation -@ARCH_ARM_TRUE@am__append_21 = $(XFAIL_TESTS_PTRACE_SINGLESTEP) -@ARCH_LOONGARCH64_TRUE@am__append_22 = $(XFAIL_TESTS_PTRACE_SINGLESTEP) +@ARCH_ARM_TRUE@am__append_26 = $(XFAIL_TESTS_PTRACE_SINGLESTEP) +@ARCH_LOONGARCH64_TRUE@am__append_27 = $(XFAIL_TESTS_PTRACE_SINGLESTEP) # This is meant for multilib binaries, -m32. # ptrace gives EBADREG when testing, # but generally everything else works. -@NO_PTRACE_TEST_TRUE@am__append_23 = run-ptrace-mapper test-ptrace Ltest-init-local-signal -noinst_PROGRAMS = $(am__EXEEXT_13) $(am__EXEEXT_17) $(am__EXEEXT_20) +@XFAIL_PTRACE_TEST_TRUE@am__append_28 = run-ptrace-mapper +noinst_PROGRAMS = $(am__EXEEXT_15) $(am__EXEEXT_19) $(am__EXEEXT_22) +test_PROGRAMS = $(check_PROGRAMS) $(noinst_PROGRAMS) subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ @@ -149,7 +186,8 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ + $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = check-namespace.sh @@ -157,14 +195,9 @@ am__EXEEXT_1 = test-proc-info$(EXEEXT) test-static-link$(EXEEXT) \ test-strerror$(EXEEXT) @REMOTE_ONLY_FALSE@am__EXEEXT_2 = Gtest-bt$(EXEEXT) Ltest-bt$(EXEEXT) \ -@REMOTE_ONLY_FALSE@ Gtest-exc$(EXEEXT) Ltest-exc$(EXEEXT) \ @REMOTE_ONLY_FALSE@ Gtest-init$(EXEEXT) Ltest-init$(EXEEXT) \ @REMOTE_ONLY_FALSE@ Gtest-concurrent$(EXEEXT) \ @REMOTE_ONLY_FALSE@ Ltest-concurrent$(EXEEXT) \ -@REMOTE_ONLY_FALSE@ Gtest-resume-sig$(EXEEXT) \ -@REMOTE_ONLY_FALSE@ Ltest-resume-sig$(EXEEXT) \ -@REMOTE_ONLY_FALSE@ Gtest-resume-sig-rt$(EXEEXT) \ -@REMOTE_ONLY_FALSE@ Ltest-resume-sig-rt$(EXEEXT) \ @REMOTE_ONLY_FALSE@ Gtest-trace$(EXEEXT) Ltest-trace$(EXEEXT) \ @REMOTE_ONLY_FALSE@ Ltest-mem-validate$(EXEEXT) \ @REMOTE_ONLY_FALSE@ test-async-sig$(EXEEXT) \ @@ -175,15 +208,23 @@ @REMOTE_ONLY_FALSE@ Ltest-nomalloc$(EXEEXT) \ @REMOTE_ONLY_FALSE@ Ltest-nocalloc$(EXEEXT) Lrs-race$(EXEEXT) @ARCH_IA64_FALSE@@REMOTE_ONLY_FALSE@am__EXEEXT_3 = Ltest-init-local-signal$(EXEEXT) -@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_4 = \ +@ENABLE_UNW_RESUME_TESTS_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_4 = Gtest-exc$(EXEEXT) \ +@ENABLE_UNW_RESUME_TESTS_TRUE@@REMOTE_ONLY_FALSE@ Ltest-exc$(EXEEXT) \ +@ENABLE_UNW_RESUME_TESTS_TRUE@@REMOTE_ONLY_FALSE@ Gtest-resume-sig$(EXEEXT) \ +@ENABLE_UNW_RESUME_TESTS_TRUE@@REMOTE_ONLY_FALSE@ Ltest-resume-sig$(EXEEXT) \ +@ENABLE_UNW_RESUME_TESTS_TRUE@@REMOTE_ONLY_FALSE@ Gtest-resume-sig-rt$(EXEEXT) \ +@ENABLE_UNW_RESUME_TESTS_TRUE@@REMOTE_ONLY_FALSE@ Ltest-resume-sig-rt$(EXEEXT) +@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_5 = \ @BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@ test-ptrace$(EXEEXT) -@BUILD_SETJMP_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_5 = \ +@BUILD_SETJMP_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_6 = \ @BUILD_SETJMP_TRUE@@REMOTE_ONLY_FALSE@ test-setjmp$(EXEEXT) -@REMOTE_ONLY_FALSE@@SUPPORT_CXX_EXCEPTIONS_TRUE@am__EXEEXT_6 = Ltest-cxx-exceptions$(EXEEXT) -@ARCH_IA64_TRUE@am__EXEEXT_7 = Gtest-dyn1$(EXEEXT) Ltest-dyn1$(EXEEXT) -am__EXEEXT_8 = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ - $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) -@ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_9 = \ +@REMOTE_ONLY_FALSE@@SUPPORT_CXX_EXCEPTIONS_TRUE@am__EXEEXT_7 = Ltest-cxx-exceptions$(EXEEXT) +@ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_8 = Gtest-dyn1$(EXEEXT) \ +@ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@ Ltest-dyn1$(EXEEXT) +am__EXEEXT_9 = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ + $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \ + $(am__EXEEXT_8) +@ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_10 = \ @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@ Gia64-test-stack$(EXEEXT) \ @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@ Lia64-test-stack$(EXEEXT) \ @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@ Gia64-test-nat$(EXEEXT) \ @@ -194,26 +235,31 @@ @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@ Lia64-test-readonly$(EXEEXT) \ @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@ ia64-test-setjmp$(EXEEXT) \ @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@ ia64-test-sig$(EXEEXT) -@ARCH_IA64_FALSE@@ARCH_PPC64_FALSE@@ARCH_X86_64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_10 = Gx64-test-dwarf-expressions$(EXEEXT) \ +@ARCH_IA64_FALSE@@ARCH_PPC64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_11 = ppc64-test-plt$(EXEEXT) +@ARCH_IA64_FALSE@@ARCH_PPC64_FALSE@@ARCH_X86_64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_12 = Gx64-test-dwarf-expressions$(EXEEXT) \ @ARCH_IA64_FALSE@@ARCH_PPC64_FALSE@@ARCH_X86_64_TRUE@@REMOTE_ONLY_FALSE@ Lx64-test-dwarf-expressions$(EXEEXT) \ @ARCH_IA64_FALSE@@ARCH_PPC64_FALSE@@ARCH_X86_64_TRUE@@REMOTE_ONLY_FALSE@ x64-unwind-badjmp-signal-frame$(EXEEXT) -@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_11 = Garm64-test-sve-signal$(EXEEXT) \ -@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@ Larm64-test-sve-signal$(EXEEXT) -am__EXEEXT_12 = $(am__EXEEXT_9) $(am__EXEEXT_10) $(am__EXEEXT_11) -am__EXEEXT_13 = -@REMOTE_ONLY_FALSE@am__EXEEXT_14 = forker$(EXEEXT) \ +@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_13 = Garm64-test-sve-signal$(EXEEXT) \ +@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@ Larm64-test-sve-signal$(EXEEXT) \ +@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@ aarch64-test-plt$(EXEEXT) \ +@ARCH_AARCH64_TRUE@@REMOTE_ONLY_FALSE@ aarch64-test-frame-record$(EXEEXT) +am__EXEEXT_14 = $(am__EXEEXT_10) $(am__EXEEXT_11) $(am__EXEEXT_12) \ + $(am__EXEEXT_13) +am__EXEEXT_15 = +@REMOTE_ONLY_FALSE@am__EXEEXT_16 = forker$(EXEEXT) \ @REMOTE_ONLY_FALSE@ Gperf-simple$(EXEEXT) Lperf-simple$(EXEEXT) \ @REMOTE_ONLY_FALSE@ Gperf-trace$(EXEEXT) Lperf-trace$(EXEEXT) -@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_15 = mapper$(EXEEXT) \ +@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_17 = mapper$(EXEEXT) \ @BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@ test-ptrace-misc$(EXEEXT) -@BUILD_COREDUMP_TRUE@@OS_LINUX_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_16 = crasher$(EXEEXT) \ +@BUILD_COREDUMP_TRUE@@OS_LINUX_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_18 = crasher$(EXEEXT) \ @BUILD_COREDUMP_TRUE@@OS_LINUX_TRUE@@REMOTE_ONLY_FALSE@ test-coredump-unwind$(EXEEXT) -am__EXEEXT_17 = $(am__EXEEXT_14) $(am__EXEEXT_15) $(am__EXEEXT_16) -@ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_18 = \ +am__EXEEXT_19 = $(am__EXEEXT_16) $(am__EXEEXT_17) $(am__EXEEXT_18) +@ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_20 = \ @ARCH_IA64_TRUE@@REMOTE_ONLY_FALSE@ ia64-test-dyn1$(EXEEXT) -@ARCH_IA64_FALSE@@ARCH_PPC64_TRUE@@REMOTE_ONLY_FALSE@@USE_ALTIVEC_TRUE@am__EXEEXT_19 = ppc64-test-altivec$(EXEEXT) -am__EXEEXT_20 = $(am__EXEEXT_18) $(am__EXEEXT_19) -PROGRAMS = $(noinst_PROGRAMS) +@ARCH_IA64_FALSE@@ARCH_PPC64_TRUE@@REMOTE_ONLY_FALSE@@USE_ALTIVEC_TRUE@am__EXEEXT_21 = ppc64-test-altivec$(EXEEXT) +am__EXEEXT_22 = $(am__EXEEXT_20) $(am__EXEEXT_21) +am__installdirs = "$(DESTDIR)$(testdir)" "$(DESTDIR)$(testdir)" +PROGRAMS = $(noinst_PROGRAMS) $(test_PROGRAMS) am_Garm64_test_sve_signal_OBJECTS = \ Garm64_test_sve_signal-Garm64-test-sve-signal.$(OBJEXT) Garm64_test_sve_signal_OBJECTS = $(am_Garm64_test_sve_signal_OBJECTS) @@ -253,7 +299,9 @@ Gtest_bt_DEPENDENCIES = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_concurrent_SOURCES = Gtest-concurrent.c Gtest_concurrent_OBJECTS = Gtest-concurrent.$(OBJEXT) -Gtest_concurrent_DEPENDENCIES = $(LIBUNWIND) $(LIBUNWIND_local) +am__DEPENDENCIES_1 = +Gtest_concurrent_DEPENDENCIES = $(LIBUNWIND) $(LIBUNWIND_local) \ + $(am__DEPENDENCIES_1) am_Gtest_dyn1_OBJECTS = Gtest-dyn1.$(OBJEXT) flush-cache.$(OBJEXT) Gtest_dyn1_OBJECTS = $(am_Gtest_dyn1_OBJECTS) Gtest_dyn1_DEPENDENCIES = $(LIBUNWIND) $(LIBUNWIND_local) @@ -262,7 +310,8 @@ Gtest_exc_DEPENDENCIES = $(LIBUNWIND) $(LIBUNWIND_local) am_Gtest_init_OBJECTS = Gtest-init.$(OBJEXT) Gtest_init_OBJECTS = $(am_Gtest_init_OBJECTS) -Gtest_init_DEPENDENCIES = $(LIBUNWIND) $(LIBUNWIND_local) +Gtest_init_DEPENDENCIES = $(LIBUNWIND) $(LIBUNWIND_local) \ + $(am__DEPENDENCIES_1) Gtest_resume_sig_SOURCES = Gtest-resume-sig.c Gtest_resume_sig_OBJECTS = Gtest-resume-sig.$(OBJEXT) Gtest_resume_sig_DEPENDENCIES = $(LIBUNWIND) $(LIBUNWIND_local) @@ -311,13 +360,14 @@ Lperf_trace_DEPENDENCIES = $(LIBUNWIND_local) Lrs_race_SOURCES = Lrs-race.c Lrs_race_OBJECTS = Lrs-race.$(OBJEXT) -Lrs_race_DEPENDENCIES = $(LIBUNWIND_local) +Lrs_race_DEPENDENCIES = $(LIBUNWIND_local) $(am__DEPENDENCIES_1) am_Ltest_bt_OBJECTS = Ltest-bt.$(OBJEXT) ident.$(OBJEXT) Ltest_bt_OBJECTS = $(am_Ltest_bt_OBJECTS) Ltest_bt_DEPENDENCIES = $(LIBUNWIND_local) Ltest_concurrent_SOURCES = Ltest-concurrent.c Ltest_concurrent_OBJECTS = Ltest-concurrent.$(OBJEXT) -Ltest_concurrent_DEPENDENCIES = $(LIBUNWIND_local) +Ltest_concurrent_DEPENDENCIES = $(LIBUNWIND_local) \ + $(am__DEPENDENCIES_1) am_Ltest_cxx_exceptions_OBJECTS = Ltest-cxx-exceptions.$(OBJEXT) Ltest_cxx_exceptions_OBJECTS = $(am_Ltest_cxx_exceptions_OBJECTS) Ltest_cxx_exceptions_DEPENDENCIES = $(LIBUNWIND_local) @@ -341,10 +391,11 @@ Ltest_mem_validate_DEPENDENCIES = $(LIBUNWIND) $(LIBUNWIND_local) am_Ltest_nocalloc_OBJECTS = Ltest-nocalloc.$(OBJEXT) Ltest_nocalloc_OBJECTS = $(am_Ltest_nocalloc_OBJECTS) -Ltest_nocalloc_DEPENDENCIES = $(LIBUNWIND_local) +Ltest_nocalloc_DEPENDENCIES = $(LIBUNWIND_local) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) am_Ltest_nomalloc_OBJECTS = Ltest-nomalloc.$(OBJEXT) Ltest_nomalloc_OBJECTS = $(am_Ltest_nomalloc_OBJECTS) -Ltest_nomalloc_DEPENDENCIES = $(LIBUNWIND_local) +Ltest_nomalloc_DEPENDENCIES = $(LIBUNWIND_local) $(am__DEPENDENCIES_1) Ltest_resume_sig_SOURCES = Ltest-resume-sig.c Ltest_resume_sig_OBJECTS = Ltest-resume-sig.$(OBJEXT) Ltest_resume_sig_DEPENDENCIES = $(LIBUNWIND_local) @@ -363,6 +414,14 @@ Lx64_test_dwarf_expressions_OBJECTS = \ $(am_Lx64_test_dwarf_expressions_OBJECTS) Lx64_test_dwarf_expressions_DEPENDENCIES = $(LIBUNWIND_local) +am_aarch64_test_frame_record_OBJECTS = \ + aarch64-test-frame-record.$(OBJEXT) +aarch64_test_frame_record_OBJECTS = \ + $(am_aarch64_test_frame_record_OBJECTS) +aarch64_test_frame_record_DEPENDENCIES = $(LIBUNWIND) +am_aarch64_test_plt_OBJECTS = aarch64-test-plt.$(OBJEXT) +aarch64_test_plt_OBJECTS = $(am_aarch64_test_plt_OBJECTS) +aarch64_test_plt_DEPENDENCIES = $(LIBUNWIND) crasher_SOURCES = crasher.c crasher_OBJECTS = crasher.$(OBJEXT) crasher_LDADD = $(LDADD) @@ -389,13 +448,17 @@ ppc64-test-altivec-utils.$(OBJEXT) ppc64_test_altivec_OBJECTS = $(am_ppc64_test_altivec_OBJECTS) ppc64_test_altivec_DEPENDENCIES = $(LIBUNWIND) +am_ppc64_test_plt_OBJECTS = ppc64-test-plt.$(OBJEXT) +ppc64_test_plt_OBJECTS = $(am_ppc64_test_plt_OBJECTS) +ppc64_test_plt_DEPENDENCIES = $(LIBUNWIND) test_async_sig_SOURCES = test-async-sig.c test_async_sig_OBJECTS = test-async-sig.$(OBJEXT) -test_async_sig_DEPENDENCIES = $(LIBUNWIND_local) +test_async_sig_DEPENDENCIES = $(LIBUNWIND_local) $(am__DEPENDENCIES_1) test_coredump_unwind_SOURCES = test-coredump-unwind.c test_coredump_unwind_OBJECTS = test-coredump-unwind.$(OBJEXT) @BUILD_COREDUMP_TRUE@test_coredump_unwind_DEPENDENCIES = \ -@BUILD_COREDUMP_TRUE@ $(LIBUNWIND_coredump) $(LIBUNWIND) +@BUILD_COREDUMP_TRUE@ $(LIBUNWIND_coredump) $(LIBUNWIND) \ +@BUILD_COREDUMP_TRUE@ $(am__DEPENDENCIES_1) test_flush_cache_SOURCES = test-flush-cache.c test_flush_cache_OBJECTS = test-flush-cache.$(OBJEXT) test_flush_cache_DEPENDENCIES = $(LIBUNWIND_local) @@ -438,6 +501,34 @@ $(am_x64_unwind_badjmp_signal_frame_OBJECTS) x64_unwind_badjmp_signal_frame_DEPENDENCIES = $(LIBUNWIND) \ $(LIBUNWIND_local) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +SCRIPTS = $(test_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -452,11 +543,60 @@ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = \ + ./$(DEPDIR)/Garm64_test_sve_signal-Garm64-test-sve-signal.Po \ + ./$(DEPDIR)/Gia64-test-nat.Po ./$(DEPDIR)/Gia64-test-rbs.Po \ + ./$(DEPDIR)/Gia64-test-readonly.Po \ + ./$(DEPDIR)/Gia64-test-stack.Po ./$(DEPDIR)/Gperf-simple.Po \ + ./$(DEPDIR)/Gperf-trace.Po ./$(DEPDIR)/Gtest-bt.Po \ + ./$(DEPDIR)/Gtest-concurrent.Po ./$(DEPDIR)/Gtest-dyn1.Po \ + ./$(DEPDIR)/Gtest-exc.Po ./$(DEPDIR)/Gtest-init.Po \ + ./$(DEPDIR)/Gtest-resume-sig-rt.Po \ + ./$(DEPDIR)/Gtest-resume-sig.Po ./$(DEPDIR)/Gtest-trace.Po \ + ./$(DEPDIR)/Gx64-test-dwarf-expressions.Po \ + ./$(DEPDIR)/Larm64_test_sve_signal-Larm64-test-sve-signal.Po \ + ./$(DEPDIR)/Lia64-test-nat.Po ./$(DEPDIR)/Lia64-test-rbs.Po \ + ./$(DEPDIR)/Lia64-test-readonly.Po \ + ./$(DEPDIR)/Lia64-test-stack.Po ./$(DEPDIR)/Lperf-simple.Po \ + ./$(DEPDIR)/Lperf-trace.Po ./$(DEPDIR)/Lrs-race.Po \ + ./$(DEPDIR)/Ltest-bt.Po ./$(DEPDIR)/Ltest-concurrent.Po \ + ./$(DEPDIR)/Ltest-cxx-exceptions.Po ./$(DEPDIR)/Ltest-dyn1.Po \ + ./$(DEPDIR)/Ltest-exc.Po \ + ./$(DEPDIR)/Ltest-init-local-signal-lib.Po \ + ./$(DEPDIR)/Ltest-init-local-signal.Po \ + ./$(DEPDIR)/Ltest-init.Po ./$(DEPDIR)/Ltest-mem-validate.Po \ + ./$(DEPDIR)/Ltest-nocalloc.Po ./$(DEPDIR)/Ltest-nomalloc.Po \ + ./$(DEPDIR)/Ltest-resume-sig-rt.Po \ + ./$(DEPDIR)/Ltest-resume-sig.Po ./$(DEPDIR)/Ltest-trace.Po \ + ./$(DEPDIR)/Ltest-varargs.Po \ + ./$(DEPDIR)/Lx64-test-dwarf-expressions.Po \ + ./$(DEPDIR)/aarch64-test-frame-record.Po \ + ./$(DEPDIR)/aarch64-test-plt.Po ./$(DEPDIR)/crasher.Po \ + ./$(DEPDIR)/flush-cache.Po ./$(DEPDIR)/forker.Po \ + ./$(DEPDIR)/ia64-dyn-asm.Po ./$(DEPDIR)/ia64-test-dyn1.Po \ + ./$(DEPDIR)/ia64-test-nat-asm.Po \ + ./$(DEPDIR)/ia64-test-rbs-asm.Po \ + ./$(DEPDIR)/ia64-test-readonly-asm.Po \ + ./$(DEPDIR)/ia64-test-setjmp.Po ./$(DEPDIR)/ia64-test-sig.Po \ + ./$(DEPDIR)/ia64-test-stack-asm.Po ./$(DEPDIR)/ident.Po \ + ./$(DEPDIR)/mapper.Po ./$(DEPDIR)/ppc64-test-altivec-utils.Po \ + ./$(DEPDIR)/ppc64-test-altivec.Po \ + ./$(DEPDIR)/ppc64-test-plt.Po ./$(DEPDIR)/test-async-sig.Po \ + ./$(DEPDIR)/test-coredump-unwind.Po \ + ./$(DEPDIR)/test-flush-cache.Po \ + ./$(DEPDIR)/test-init-remote.Po ./$(DEPDIR)/test-mem.Po \ + ./$(DEPDIR)/test-proc-info.Po ./$(DEPDIR)/test-ptrace-misc.Po \ + ./$(DEPDIR)/test-ptrace.Po ./$(DEPDIR)/test-reg-state.Po \ + ./$(DEPDIR)/test-setjmp.Po ./$(DEPDIR)/test-static-link-gen.Po \ + ./$(DEPDIR)/test-static-link-loc.Po \ + ./$(DEPDIR)/test-strerror.Po \ + ./$(DEPDIR)/x64-test-dwarf-expressions.Po \ + ./$(DEPDIR)/x64-unwind-badjmp-signal-frame.Po am__mv = mv -f CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ +LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CCASFLAGS) $(CCASFLAGS) @@ -517,9 +657,12 @@ $(Ltest_mem_validate_SOURCES) $(Ltest_nocalloc_SOURCES) \ $(Ltest_nomalloc_SOURCES) Ltest-resume-sig.c \ Ltest-resume-sig-rt.c $(Ltest_trace_SOURCES) Ltest-varargs.c \ - $(Lx64_test_dwarf_expressions_SOURCES) crasher.c forker.c \ + $(Lx64_test_dwarf_expressions_SOURCES) \ + $(aarch64_test_frame_record_SOURCES) \ + $(aarch64_test_plt_SOURCES) crasher.c forker.c \ $(ia64_test_dyn1_SOURCES) ia64-test-setjmp.c ia64-test-sig.c \ - mapper.c $(ppc64_test_altivec_SOURCES) test-async-sig.c \ + mapper.c $(ppc64_test_altivec_SOURCES) \ + $(ppc64_test_plt_SOURCES) test-async-sig.c \ test-coredump-unwind.c test-flush-cache.c test-init-remote.c \ test-mem.c test-proc-info.c test-ptrace.c \ $(test_ptrace_misc_SOURCES) test-reg-state.c test-setjmp.c \ @@ -542,9 +685,12 @@ $(Ltest_mem_validate_SOURCES) $(Ltest_nocalloc_SOURCES) \ $(Ltest_nomalloc_SOURCES) Ltest-resume-sig.c \ Ltest-resume-sig-rt.c $(Ltest_trace_SOURCES) Ltest-varargs.c \ - $(Lx64_test_dwarf_expressions_SOURCES) crasher.c forker.c \ + $(Lx64_test_dwarf_expressions_SOURCES) \ + $(aarch64_test_frame_record_SOURCES) \ + $(aarch64_test_plt_SOURCES) crasher.c forker.c \ $(ia64_test_dyn1_SOURCES) ia64-test-setjmp.c ia64-test-sig.c \ - mapper.c $(ppc64_test_altivec_SOURCES) test-async-sig.c \ + mapper.c $(ppc64_test_altivec_SOURCES) \ + $(ppc64_test_plt_SOURCES) test-async-sig.c \ test-coredump-unwind.c test-flush-cache.c test-init-remote.c \ test-mem.c test-proc-info.c test-ptrace.c \ $(test_ptrace_misc_SOURCES) test-reg-state.c test-setjmp.c \ @@ -555,6 +701,7 @@ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is @@ -596,33 +743,6 @@ std=''; \ fi; \ } -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* @@ -758,9 +878,8 @@ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck -@NO_PTRACE_TEST_TRUE@am__EXEEXT_21 = run-ptrace-mapper \ -@NO_PTRACE_TEST_TRUE@ test-ptrace$(EXEEXT) \ -@NO_PTRACE_TEST_TRUE@ Ltest-init-local-signal$(EXEEXT) +@ARCH_X86_TRUE@@BUILD_PTRACE_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_23 = test-ptrace$(EXEEXT) +@ARCH_PPC32_TRUE@@REMOTE_ONLY_FALSE@am__EXEEXT_24 = Ltest-cxx-exceptions$(EXEEXT) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) @@ -862,6 +981,7 @@ PKG_MAINTAINER = @PKG_MAINTAINER@ PKG_MAJOR = @PKG_MAJOR@ PKG_MINOR = @PKG_MINOR@ +PTHREADS_LIB = @PTHREADS_LIB@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ @@ -931,38 +1051,52 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -AM_CPPFLAGS = -I$(top_srcdir)/include + +# Test binaries and scripts get installed here +testdir = ${pkglibexecdir} +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/tdep-$(arch) -I$(top_srcdir)/src AM_CFLAGS = -fno-optimize-sibling-calls LOG_DRIVER = $(SHELL) $(UNW_TESTDRIVER) EXTRA_DIST = run-ia64-test-dyn1 run-ptrace-mapper run-ptrace-misc \ - run-check-namespace run-coredump-unwind \ + run-coredump-unwind \ run-coredump-unwind-mdi check-namespace.sh.in \ + test-runner.in \ Gtest-nomalloc.c +CLEANFILES = test-runner MAINTAINERCLEANFILES = Makefile.in noinst_PROGRAMS_arch = $(am__append_1) $(am__append_4) -noinst_PROGRAMS_cdep = $(am__append_8) $(am__append_12) \ - $(am__append_16) +noinst_PROGRAMS_cdep = $(am__append_9) $(am__append_14) \ + $(am__append_21) noinst_PROGRAMS_common = -check_PROGRAMS_arch = $(am__append_3) $(am__append_5) $(am__append_6) -check_PROGRAMS_cdep = $(am__append_7) $(am__append_9) $(am__append_11) \ - $(am__append_13) $(am__append_14) $(am__append_18) +check_PROGRAMS_arch = $(am__append_3) $(am__append_5) $(am__append_6) \ + $(am__append_7) +check_PROGRAMS_cdep = $(am__append_8) $(am__append_10) \ + $(am__append_11) $(am__append_13) $(am__append_16) \ + $(am__append_17) $(am__append_19) check_PROGRAMS_common = test-proc-info test-static-link \ test-strerror check_SCRIPTS_arch = $(am__append_2) -check_SCRIPTS_cdep = $(am__append_10) $(am__append_15) \ - $(am__append_17) -check_SCRIPTS_common = run-check-namespace +check_SCRIPTS_cdep = $(am__append_12) $(am__append_20) \ + $(am__append_22) +check_SCRIPTS_common = check-namespace.sh @REMOTE_ONLY_FALSE@LIBUNWIND_local = $(top_builddir)/src/libunwind.la check_SCRIPTS = $(check_SCRIPTS_common) $(check_SCRIPTS_cdep) \ $(check_SCRIPTS_arch) -TESTS = $(check_PROGRAMS) $(check_SCRIPTS) +TESTS = $(check_PROGRAMS) $(am__append_23) # Use if arch defines but does not support PTRACE_SINGLESTEP # ptrace request used in the tests. XFAIL_TESTS_PTRACE_SINGLESTEP = run-ptrace-mapper run-ptrace-misc +noinst_HEADERS = ident.h +do_test_subst = sed -e 's,[@]TESTS[@],$(TESTS),g' \ + -e 's,[@]XFAIL_TESTS[@],$(XFAIL_TESTS),g' \ + -e 's,[@]LIBDIR[@],$(libdir),g' \ + -e 's,[@]ARCH[@],$(arch),g' + +test_SCRIPTS = ${check_SCRIPTS} test-runner Lia64_test_readonly_SOURCES = Lia64-test-readonly.c ia64-test-readonly-asm.S Gia64_test_readonly_SOURCES = Gia64-test-readonly.c ia64-test-readonly-asm.S Lia64_test_stack_SOURCES = Lia64-test-stack.c ia64-test-stack-asm.S \ @@ -979,6 +1113,7 @@ flush-cache.h ppc64_test_altivec_SOURCES = ppc64-test-altivec.c ppc64-test-altivec-utils.c +ppc64_test_plt_SOURCES = ppc64-test-plt.c Gx64_test_dwarf_expressions_SOURCES = Gx64-test-dwarf-expressions.c \ x64-test-dwarf-expressions.S @@ -987,8 +1122,10 @@ Garm64_test_sve_signal_SOURCES = Garm64-test-sve-signal.c Larm64_test_sve_signal_SOURCES = Larm64-test-sve-signal.c -Garm64_test_sve_signal_CFLAGS = -fno-inline -march=native -Larm64_test_sve_signal_CFLAGS = -fno-inline -march=native +aarch64_test_plt_SOURCES = aarch64-test-plt.c +aarch64_test_frame_record_SOURCES = aarch64-test-frame-record.c +@COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_TRUE@Garm64_test_sve_signal_CFLAGS = -fno-inline -march=armv8-a+sve +@COMPILER_SUPPORTS_MARCH_ARMV8_A_SVE_TRUE@Larm64_test_sve_signal_CFLAGS = -fno-inline -march=armv8-a+sve Gtest_init_SOURCES = Gtest-init.cxx Ltest_init_SOURCES = Ltest-init.cxx Ltest_cxx_exceptions_SOURCES = Ltest-cxx-exceptions.cxx @@ -1016,7 +1153,7 @@ LIBUNWIND_setjmp = $(top_builddir)/src/libunwind-setjmp.la \ $(LIBUNWIND_ELF) $(LIBUNWIND) -test_async_sig_LDADD = $(LIBUNWIND_local) -lpthread +test_async_sig_LDADD = $(LIBUNWIND_local) $(PTHREADS_LIB) test_flush_cache_LDADD = $(LIBUNWIND_local) test_init_remote_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) test_mem_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) @@ -1025,28 +1162,28 @@ test_proc_info_LDADD = $(LIBUNWIND) test_static_link_LDADD = $(LIBUNWIND) test_strerror_LDADD = $(LIBUNWIND) -Lrs_race_LDADD = $(LIBUNWIND_local) -lpthread +Lrs_race_LDADD = $(LIBUNWIND_local) $(PTHREADS_LIB) Ltest_varargs_LDADD = $(LIBUNWIND_local) Ltest_init_local_signal_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_bt_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) -Gtest_concurrent_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) -lpthread +Gtest_concurrent_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) $(PTHREADS_LIB) x64_unwind_badjmp_signal_frame_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_dyn1_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_exc_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) -Gtest_init_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) @BACKTRACELIB@ +Gtest_init_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) $(BACKTRACELIB) Gtest_resume_sig_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_resume_sig_rt_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gperf_simple_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gtest_trace_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gperf_trace_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Ltest_bt_LDADD = $(LIBUNWIND_local) -Ltest_concurrent_LDADD = $(LIBUNWIND_local) -lpthread +Ltest_concurrent_LDADD = $(LIBUNWIND_local) $(PTHREADS_LIB) Ltest_cxx_exceptions_LDADD = $(LIBUNWIND_local) Ltest_dyn1_LDADD = $(LIBUNWIND_local) Ltest_exc_LDADD = $(LIBUNWIND_local) Ltest_init_LDADD = $(LIBUNWIND_local) -Ltest_nomalloc_LDADD = $(LIBUNWIND_local) @DLLIB@ -Ltest_nocalloc_LDADD = $(LIBUNWIND_local) @DLLIB@ -lpthread +Ltest_nomalloc_LDADD = $(LIBUNWIND_local) $(DLLIB) +Ltest_nocalloc_LDADD = $(LIBUNWIND_local) $(DLLIB) $(PTHREADS_LIB) Ltest_resume_sig_LDADD = $(LIBUNWIND_local) Ltest_resume_sig_rt_LDADD = $(LIBUNWIND_local) Lperf_simple_LDADD = $(LIBUNWIND_local) @@ -1055,7 +1192,7 @@ Ltest_mem_validate_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) test_setjmp_LDADD = $(LIBUNWIND_setjmp) ia64_test_setjmp_LDADD = $(LIBUNWIND_setjmp) -@BUILD_COREDUMP_TRUE@test_coredump_unwind_LDADD = $(LIBUNWIND_coredump) $(LIBUNWIND) @BACKTRACELIB@ +@BUILD_COREDUMP_TRUE@test_coredump_unwind_LDADD = $(LIBUNWIND_coredump) $(LIBUNWIND) $(BACKTRACELIB) Gia64_test_nat_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gia64_test_stack_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Gia64_test_rbs_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) @@ -1067,10 +1204,13 @@ ia64_test_dyn1_LDADD = $(LIBUNWIND) ia64_test_sig_LDADD = $(LIBUNWIND) ppc64_test_altivec_LDADD = $(LIBUNWIND) +ppc64_test_plt_LDADD = $(LIBUNWIND) Gx64_test_dwarf_expressions_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Lx64_test_dwarf_expressions_LDADD = $(LIBUNWIND_local) Garm64_test_sve_signal_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) Larm64_test_sve_signal_LDADD = $(LIBUNWIND_local) +aarch64_test_plt_LDADD = $(LIBUNWIND) +aarch64_test_frame_record_LDADD = $(LIBUNWIND) all: all-am .SUFFIXES: @@ -1092,8 +1232,8 @@ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -1104,8 +1244,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): -check-namespace.sh: $(top_builddir)/config.status $(srcdir)/check-namespace.sh.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +@CONFIG_TESTS_TRUE@check-namespace.sh: $(top_builddir)/config.status $(srcdir)/check-namespace.sh.in +@CONFIG_TESTS_TRUE@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ @@ -1124,6 +1264,55 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list +install-testPROGRAMS: $(test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(test_PROGRAMS)'; test -n "$(testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(test_PROGRAMS)'; test -n "$(testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(testdir)" && rm -f $$files + +clean-testPROGRAMS: + @list='$(test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list Garm64-test-sve-signal$(EXEEXT): $(Garm64_test_sve_signal_OBJECTS) $(Garm64_test_sve_signal_DEPENDENCIES) $(EXTRA_Garm64_test_sve_signal_DEPENDENCIES) @rm -f Garm64-test-sve-signal$(EXEEXT) @@ -1281,6 +1470,14 @@ @rm -f Lx64-test-dwarf-expressions$(EXEEXT) $(AM_V_CCLD)$(LINK) $(Lx64_test_dwarf_expressions_OBJECTS) $(Lx64_test_dwarf_expressions_LDADD) $(LIBS) +aarch64-test-frame-record$(EXEEXT): $(aarch64_test_frame_record_OBJECTS) $(aarch64_test_frame_record_DEPENDENCIES) $(EXTRA_aarch64_test_frame_record_DEPENDENCIES) + @rm -f aarch64-test-frame-record$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(aarch64_test_frame_record_OBJECTS) $(aarch64_test_frame_record_LDADD) $(LIBS) + +aarch64-test-plt$(EXEEXT): $(aarch64_test_plt_OBJECTS) $(aarch64_test_plt_DEPENDENCIES) $(EXTRA_aarch64_test_plt_DEPENDENCIES) + @rm -f aarch64-test-plt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(aarch64_test_plt_OBJECTS) $(aarch64_test_plt_LDADD) $(LIBS) + crasher$(EXEEXT): $(crasher_OBJECTS) $(crasher_DEPENDENCIES) $(EXTRA_crasher_DEPENDENCIES) @rm -f crasher$(EXEEXT) $(AM_V_CCLD)$(LINK) $(crasher_OBJECTS) $(crasher_LDADD) $(LIBS) @@ -1309,6 +1506,10 @@ @rm -f ppc64-test-altivec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ppc64_test_altivec_OBJECTS) $(ppc64_test_altivec_LDADD) $(LIBS) +ppc64-test-plt$(EXEEXT): $(ppc64_test_plt_OBJECTS) $(ppc64_test_plt_DEPENDENCIES) $(EXTRA_ppc64_test_plt_DEPENDENCIES) + @rm -f ppc64-test-plt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ppc64_test_plt_OBJECTS) $(ppc64_test_plt_LDADD) $(LIBS) + test-async-sig$(EXEEXT): $(test_async_sig_OBJECTS) $(test_async_sig_DEPENDENCIES) $(EXTRA_test_async_sig_DEPENDENCIES) @rm -f test-async-sig$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_async_sig_OBJECTS) $(test_async_sig_LDADD) $(LIBS) @@ -1360,6 +1561,41 @@ x64-unwind-badjmp-signal-frame$(EXEEXT): $(x64_unwind_badjmp_signal_frame_OBJECTS) $(x64_unwind_badjmp_signal_frame_DEPENDENCIES) $(EXTRA_x64_unwind_badjmp_signal_frame_DEPENDENCIES) @rm -f x64-unwind-badjmp-signal-frame$(EXEEXT) $(AM_V_CCLD)$(LINK) $(x64_unwind_badjmp_signal_frame_OBJECTS) $(x64_unwind_badjmp_signal_frame_LDADD) $(LIBS) +install-testSCRIPTS: $(test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(test_SCRIPTS)'; test -n "$(testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(test_SCRIPTS)'; test -n "$(testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(testdir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -1367,76 +1603,85 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Garm64_test_sve_signal-Garm64-test-sve-signal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gia64-test-nat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gia64-test-rbs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gia64-test-readonly.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gia64-test-stack.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gperf-simple.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gperf-trace.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-bt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-concurrent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-dyn1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-exc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-resume-sig-rt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-resume-sig.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-trace.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gx64-test-dwarf-expressions.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Larm64_test_sve_signal-Larm64-test-sve-signal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lia64-test-nat.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lia64-test-rbs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lia64-test-readonly.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lia64-test-stack.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lperf-simple.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lperf-trace.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lrs-race.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-bt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-concurrent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-cxx-exceptions.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-dyn1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-exc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-init-local-signal-lib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-init-local-signal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-mem-validate.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-nocalloc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-nomalloc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-resume-sig-rt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-resume-sig.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-trace.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-varargs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lx64-test-dwarf-expressions.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crasher.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flush-cache.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/forker.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-dyn-asm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-dyn1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-nat-asm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-rbs-asm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-readonly-asm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-setjmp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-sig.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-stack-asm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ident.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64-test-altivec-utils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64-test-altivec.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-async-sig.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-coredump-unwind.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-flush-cache.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-init-remote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mem.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-proc-info.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ptrace-misc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ptrace.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-reg-state.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setjmp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-static-link-gen.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-static-link-loc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strerror.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x64-test-dwarf-expressions.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x64-unwind-badjmp-signal-frame.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Garm64_test_sve_signal-Garm64-test-sve-signal.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gia64-test-nat.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gia64-test-rbs.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gia64-test-readonly.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gia64-test-stack.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gperf-simple.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gperf-trace.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-bt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-concurrent.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-dyn1.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-exc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-init.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-resume-sig-rt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-resume-sig.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtest-trace.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gx64-test-dwarf-expressions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Larm64_test_sve_signal-Larm64-test-sve-signal.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lia64-test-nat.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lia64-test-rbs.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lia64-test-readonly.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lia64-test-stack.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lperf-simple.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lperf-trace.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lrs-race.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-bt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-concurrent.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-cxx-exceptions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-dyn1.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-exc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-init-local-signal-lib.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-init-local-signal.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-init.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-mem-validate.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-nocalloc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-nomalloc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-resume-sig-rt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-resume-sig.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-trace.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Ltest-varargs.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lx64-test-dwarf-expressions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64-test-frame-record.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64-test-plt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crasher.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flush-cache.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/forker.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-dyn-asm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-dyn1.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-nat-asm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-rbs-asm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-readonly-asm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-setjmp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-sig.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64-test-stack-asm.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ident.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapper.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64-test-altivec-utils.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64-test-altivec.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64-test-plt.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-async-sig.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-coredump-unwind.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-flush-cache.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-init-remote.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mem.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-proc-info.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ptrace-misc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ptrace.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-reg-state.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-setjmp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-static-link-gen.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-static-link-loc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strerror.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x64-test-dwarf-expressions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x64-unwind-badjmp-signal-frame.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) .S.o: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @@ -1716,7 +1961,7 @@ fi; \ $$success || exit 1 -check-TESTS: +check-TESTS: $(check_PROGRAMS) $(check_SCRIPTS) @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @@ -1772,20 +2017,6 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) -Gtest-exc.log: Gtest-exc$(EXEEXT) - @p='Gtest-exc$(EXEEXT)'; \ - b='Gtest-exc'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -Ltest-exc.log: Ltest-exc$(EXEEXT) - @p='Ltest-exc$(EXEEXT)'; \ - b='Ltest-exc'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) Gtest-init.log: Gtest-init$(EXEEXT) @p='Gtest-init$(EXEEXT)'; \ b='Gtest-init'; \ @@ -1814,34 +2045,6 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) -Gtest-resume-sig.log: Gtest-resume-sig$(EXEEXT) - @p='Gtest-resume-sig$(EXEEXT)'; \ - b='Gtest-resume-sig'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -Ltest-resume-sig.log: Ltest-resume-sig$(EXEEXT) - @p='Ltest-resume-sig$(EXEEXT)'; \ - b='Ltest-resume-sig'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -Gtest-resume-sig-rt.log: Gtest-resume-sig-rt$(EXEEXT) - @p='Gtest-resume-sig-rt$(EXEEXT)'; \ - b='Gtest-resume-sig-rt'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -Ltest-resume-sig-rt.log: Ltest-resume-sig-rt$(EXEEXT) - @p='Ltest-resume-sig-rt$(EXEEXT)'; \ - b='Ltest-resume-sig-rt'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) Gtest-trace.log: Gtest-trace$(EXEEXT) @p='Gtest-trace$(EXEEXT)'; \ b='Gtest-trace'; \ @@ -1933,6 +2136,48 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +Gtest-exc.log: Gtest-exc$(EXEEXT) + @p='Gtest-exc$(EXEEXT)'; \ + b='Gtest-exc'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +Ltest-exc.log: Ltest-exc$(EXEEXT) + @p='Ltest-exc$(EXEEXT)'; \ + b='Ltest-exc'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +Gtest-resume-sig.log: Gtest-resume-sig$(EXEEXT) + @p='Gtest-resume-sig$(EXEEXT)'; \ + b='Gtest-resume-sig'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +Ltest-resume-sig.log: Ltest-resume-sig$(EXEEXT) + @p='Ltest-resume-sig$(EXEEXT)'; \ + b='Ltest-resume-sig'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +Gtest-resume-sig-rt.log: Gtest-resume-sig-rt$(EXEEXT) + @p='Gtest-resume-sig-rt$(EXEEXT)'; \ + b='Gtest-resume-sig-rt'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +Ltest-resume-sig-rt.log: Ltest-resume-sig-rt$(EXEEXT) + @p='Ltest-resume-sig-rt$(EXEEXT)'; \ + b='Ltest-resume-sig-rt'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) test-ptrace.log: test-ptrace$(EXEEXT) @p='test-ptrace$(EXEEXT)'; \ b='test-ptrace'; \ @@ -2038,6 +2283,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +ppc64-test-plt.log: ppc64-test-plt$(EXEEXT) + @p='ppc64-test-plt$(EXEEXT)'; \ + b='ppc64-test-plt'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) Gx64-test-dwarf-expressions.log: Gx64-test-dwarf-expressions$(EXEEXT) @p='Gx64-test-dwarf-expressions$(EXEEXT)'; \ b='Gx64-test-dwarf-expressions'; \ @@ -2073,9 +2325,23 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) -run-check-namespace.log: run-check-namespace - @p='run-check-namespace'; \ - b='run-check-namespace'; \ +aarch64-test-plt.log: aarch64-test-plt$(EXEEXT) + @p='aarch64-test-plt$(EXEEXT)'; \ + b='aarch64-test-plt'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +aarch64-test-frame-record.log: aarch64-test-frame-record$(EXEEXT) + @p='aarch64-test-frame-record$(EXEEXT)'; \ + b='aarch64-test-frame-record'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check-namespace.sh.log: check-namespace.sh + @p='check-namespace.sh'; \ + b='check-namespace.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ @@ -2130,7 +2396,10 @@ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) -distdir: $(DISTFILES) +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -2164,8 +2433,11 @@ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am -all-am: Makefile $(PROGRAMS) +all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS) installdirs: + for dir in "$(DESTDIR)$(testdir)" "$(DESTDIR)$(testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-am install-exec: install-exec-am install-data: install-data-am @@ -2191,6 +2463,7 @@ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) @@ -2203,10 +2476,82 @@ clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - clean-noinstPROGRAMS mostlyclean-am + clean-noinstPROGRAMS clean-testPROGRAMS mostlyclean-am distclean: distclean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/Garm64_test_sve_signal-Garm64-test-sve-signal.Po + -rm -f ./$(DEPDIR)/Gia64-test-nat.Po + -rm -f ./$(DEPDIR)/Gia64-test-rbs.Po + -rm -f ./$(DEPDIR)/Gia64-test-readonly.Po + -rm -f ./$(DEPDIR)/Gia64-test-stack.Po + -rm -f ./$(DEPDIR)/Gperf-simple.Po + -rm -f ./$(DEPDIR)/Gperf-trace.Po + -rm -f ./$(DEPDIR)/Gtest-bt.Po + -rm -f ./$(DEPDIR)/Gtest-concurrent.Po + -rm -f ./$(DEPDIR)/Gtest-dyn1.Po + -rm -f ./$(DEPDIR)/Gtest-exc.Po + -rm -f ./$(DEPDIR)/Gtest-init.Po + -rm -f ./$(DEPDIR)/Gtest-resume-sig-rt.Po + -rm -f ./$(DEPDIR)/Gtest-resume-sig.Po + -rm -f ./$(DEPDIR)/Gtest-trace.Po + -rm -f ./$(DEPDIR)/Gx64-test-dwarf-expressions.Po + -rm -f ./$(DEPDIR)/Larm64_test_sve_signal-Larm64-test-sve-signal.Po + -rm -f ./$(DEPDIR)/Lia64-test-nat.Po + -rm -f ./$(DEPDIR)/Lia64-test-rbs.Po + -rm -f ./$(DEPDIR)/Lia64-test-readonly.Po + -rm -f ./$(DEPDIR)/Lia64-test-stack.Po + -rm -f ./$(DEPDIR)/Lperf-simple.Po + -rm -f ./$(DEPDIR)/Lperf-trace.Po + -rm -f ./$(DEPDIR)/Lrs-race.Po + -rm -f ./$(DEPDIR)/Ltest-bt.Po + -rm -f ./$(DEPDIR)/Ltest-concurrent.Po + -rm -f ./$(DEPDIR)/Ltest-cxx-exceptions.Po + -rm -f ./$(DEPDIR)/Ltest-dyn1.Po + -rm -f ./$(DEPDIR)/Ltest-exc.Po + -rm -f ./$(DEPDIR)/Ltest-init-local-signal-lib.Po + -rm -f ./$(DEPDIR)/Ltest-init-local-signal.Po + -rm -f ./$(DEPDIR)/Ltest-init.Po + -rm -f ./$(DEPDIR)/Ltest-mem-validate.Po + -rm -f ./$(DEPDIR)/Ltest-nocalloc.Po + -rm -f ./$(DEPDIR)/Ltest-nomalloc.Po + -rm -f ./$(DEPDIR)/Ltest-resume-sig-rt.Po + -rm -f ./$(DEPDIR)/Ltest-resume-sig.Po + -rm -f ./$(DEPDIR)/Ltest-trace.Po + -rm -f ./$(DEPDIR)/Ltest-varargs.Po + -rm -f ./$(DEPDIR)/Lx64-test-dwarf-expressions.Po + -rm -f ./$(DEPDIR)/aarch64-test-frame-record.Po + -rm -f ./$(DEPDIR)/aarch64-test-plt.Po + -rm -f ./$(DEPDIR)/crasher.Po + -rm -f ./$(DEPDIR)/flush-cache.Po + -rm -f ./$(DEPDIR)/forker.Po + -rm -f ./$(DEPDIR)/ia64-dyn-asm.Po + -rm -f ./$(DEPDIR)/ia64-test-dyn1.Po + -rm -f ./$(DEPDIR)/ia64-test-nat-asm.Po + -rm -f ./$(DEPDIR)/ia64-test-rbs-asm.Po + -rm -f ./$(DEPDIR)/ia64-test-readonly-asm.Po + -rm -f ./$(DEPDIR)/ia64-test-setjmp.Po + -rm -f ./$(DEPDIR)/ia64-test-sig.Po + -rm -f ./$(DEPDIR)/ia64-test-stack-asm.Po + -rm -f ./$(DEPDIR)/ident.Po + -rm -f ./$(DEPDIR)/mapper.Po + -rm -f ./$(DEPDIR)/ppc64-test-altivec-utils.Po + -rm -f ./$(DEPDIR)/ppc64-test-altivec.Po + -rm -f ./$(DEPDIR)/ppc64-test-plt.Po + -rm -f ./$(DEPDIR)/test-async-sig.Po + -rm -f ./$(DEPDIR)/test-coredump-unwind.Po + -rm -f ./$(DEPDIR)/test-flush-cache.Po + -rm -f ./$(DEPDIR)/test-init-remote.Po + -rm -f ./$(DEPDIR)/test-mem.Po + -rm -f ./$(DEPDIR)/test-proc-info.Po + -rm -f ./$(DEPDIR)/test-ptrace-misc.Po + -rm -f ./$(DEPDIR)/test-ptrace.Po + -rm -f ./$(DEPDIR)/test-reg-state.Po + -rm -f ./$(DEPDIR)/test-setjmp.Po + -rm -f ./$(DEPDIR)/test-static-link-gen.Po + -rm -f ./$(DEPDIR)/test-static-link-loc.Po + -rm -f ./$(DEPDIR)/test-strerror.Po + -rm -f ./$(DEPDIR)/x64-test-dwarf-expressions.Po + -rm -f ./$(DEPDIR)/x64-unwind-badjmp-signal-frame.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -2223,7 +2568,7 @@ info-am: -install-data-am: +install-data-am: install-testPROGRAMS install-testSCRIPTS install-dvi: install-dvi-am @@ -2252,7 +2597,79 @@ installcheck-am: maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) + -rm -f ./$(DEPDIR)/Garm64_test_sve_signal-Garm64-test-sve-signal.Po + -rm -f ./$(DEPDIR)/Gia64-test-nat.Po + -rm -f ./$(DEPDIR)/Gia64-test-rbs.Po + -rm -f ./$(DEPDIR)/Gia64-test-readonly.Po + -rm -f ./$(DEPDIR)/Gia64-test-stack.Po + -rm -f ./$(DEPDIR)/Gperf-simple.Po + -rm -f ./$(DEPDIR)/Gperf-trace.Po + -rm -f ./$(DEPDIR)/Gtest-bt.Po + -rm -f ./$(DEPDIR)/Gtest-concurrent.Po + -rm -f ./$(DEPDIR)/Gtest-dyn1.Po + -rm -f ./$(DEPDIR)/Gtest-exc.Po + -rm -f ./$(DEPDIR)/Gtest-init.Po + -rm -f ./$(DEPDIR)/Gtest-resume-sig-rt.Po + -rm -f ./$(DEPDIR)/Gtest-resume-sig.Po + -rm -f ./$(DEPDIR)/Gtest-trace.Po + -rm -f ./$(DEPDIR)/Gx64-test-dwarf-expressions.Po + -rm -f ./$(DEPDIR)/Larm64_test_sve_signal-Larm64-test-sve-signal.Po + -rm -f ./$(DEPDIR)/Lia64-test-nat.Po + -rm -f ./$(DEPDIR)/Lia64-test-rbs.Po + -rm -f ./$(DEPDIR)/Lia64-test-readonly.Po + -rm -f ./$(DEPDIR)/Lia64-test-stack.Po + -rm -f ./$(DEPDIR)/Lperf-simple.Po + -rm -f ./$(DEPDIR)/Lperf-trace.Po + -rm -f ./$(DEPDIR)/Lrs-race.Po + -rm -f ./$(DEPDIR)/Ltest-bt.Po + -rm -f ./$(DEPDIR)/Ltest-concurrent.Po + -rm -f ./$(DEPDIR)/Ltest-cxx-exceptions.Po + -rm -f ./$(DEPDIR)/Ltest-dyn1.Po + -rm -f ./$(DEPDIR)/Ltest-exc.Po + -rm -f ./$(DEPDIR)/Ltest-init-local-signal-lib.Po + -rm -f ./$(DEPDIR)/Ltest-init-local-signal.Po + -rm -f ./$(DEPDIR)/Ltest-init.Po + -rm -f ./$(DEPDIR)/Ltest-mem-validate.Po + -rm -f ./$(DEPDIR)/Ltest-nocalloc.Po + -rm -f ./$(DEPDIR)/Ltest-nomalloc.Po + -rm -f ./$(DEPDIR)/Ltest-resume-sig-rt.Po + -rm -f ./$(DEPDIR)/Ltest-resume-sig.Po + -rm -f ./$(DEPDIR)/Ltest-trace.Po + -rm -f ./$(DEPDIR)/Ltest-varargs.Po + -rm -f ./$(DEPDIR)/Lx64-test-dwarf-expressions.Po + -rm -f ./$(DEPDIR)/aarch64-test-frame-record.Po + -rm -f ./$(DEPDIR)/aarch64-test-plt.Po + -rm -f ./$(DEPDIR)/crasher.Po + -rm -f ./$(DEPDIR)/flush-cache.Po + -rm -f ./$(DEPDIR)/forker.Po + -rm -f ./$(DEPDIR)/ia64-dyn-asm.Po + -rm -f ./$(DEPDIR)/ia64-test-dyn1.Po + -rm -f ./$(DEPDIR)/ia64-test-nat-asm.Po + -rm -f ./$(DEPDIR)/ia64-test-rbs-asm.Po + -rm -f ./$(DEPDIR)/ia64-test-readonly-asm.Po + -rm -f ./$(DEPDIR)/ia64-test-setjmp.Po + -rm -f ./$(DEPDIR)/ia64-test-sig.Po + -rm -f ./$(DEPDIR)/ia64-test-stack-asm.Po + -rm -f ./$(DEPDIR)/ident.Po + -rm -f ./$(DEPDIR)/mapper.Po + -rm -f ./$(DEPDIR)/ppc64-test-altivec-utils.Po + -rm -f ./$(DEPDIR)/ppc64-test-altivec.Po + -rm -f ./$(DEPDIR)/ppc64-test-plt.Po + -rm -f ./$(DEPDIR)/test-async-sig.Po + -rm -f ./$(DEPDIR)/test-coredump-unwind.Po + -rm -f ./$(DEPDIR)/test-flush-cache.Po + -rm -f ./$(DEPDIR)/test-init-remote.Po + -rm -f ./$(DEPDIR)/test-mem.Po + -rm -f ./$(DEPDIR)/test-proc-info.Po + -rm -f ./$(DEPDIR)/test-ptrace-misc.Po + -rm -f ./$(DEPDIR)/test-ptrace.Po + -rm -f ./$(DEPDIR)/test-reg-state.Po + -rm -f ./$(DEPDIR)/test-setjmp.Po + -rm -f ./$(DEPDIR)/test-static-link-gen.Po + -rm -f ./$(DEPDIR)/test-static-link-loc.Po + -rm -f ./$(DEPDIR)/test-strerror.Po + -rm -f ./$(DEPDIR)/x64-test-dwarf-expressions.Po + -rm -f ./$(DEPDIR)/x64-unwind-badjmp-signal-frame.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -2269,29 +2686,31 @@ ps-am: -uninstall-am: +uninstall-am: uninstall-testPROGRAMS uninstall-testSCRIPTS .MAKE: check-am install-am install-strip -.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ - clean-checkPROGRAMS clean-generic clean-libtool \ - clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ + check-am clean clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstPROGRAMS clean-testPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip install-testPROGRAMS \ + install-testSCRIPTS installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ - uninstall-am + uninstall-am uninstall-testPROGRAMS uninstall-testSCRIPTS .PRECIOUS: Makefile @REMOTE_ONLY_TRUE@perf: +@ARCH_PPC32_TRUE@@REMOTE_ONLY_FALSE@ # https://github.com/libunwind/libunwind/issues/561 @REMOTE_ONLY_FALSE@perf: perf-startup Gperf-simple Lperf-simple Lperf-trace @REMOTE_ONLY_FALSE@ @echo "########## Basic performance of generic libunwind:" @@ -2302,6 +2721,9 @@ @REMOTE_ONLY_FALSE@ @./Lperf-trace @REMOTE_ONLY_FALSE@ @echo "########## Startup overhead:" @REMOTE_ONLY_FALSE@ @$(srcdir)/perf-startup @arch@ +test-runner: test-runner.in Makefile + $(AM_V_GEN)$(do_test_subst) <$(srcdir)/test-runner.in >$@ + @chmod +x test-runner # 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. diff -Nru libunwind-1.7.2/tests/aarch64-test-frame-record.c libunwind-1.8.1/tests/aarch64-test-frame-record.c --- libunwind-1.7.2/tests/aarch64-test-frame-record.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/tests/aarch64-test-frame-record.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,390 @@ +/* + * Unittest AArch64 get_frame_state function by inspecting output at + * different points in example address spaces (from python2.7) + */ + +#include "dwarf.h" +#include "libunwind_i.h" + +int unw_is_signal_frame (unw_cursor_t *cursor) { return 0; } +int dwarf_step (struct dwarf_cursor *c) { return 0; } +#include "aarch64/Gstep.c" + +static int procedure_size; + +/* Mock access_mem implementation */ +static int +access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, + void *arg) +{ + if (write != 0) + return -1; + + const size_t mem_size = procedure_size * sizeof(uint32_t); + const void *mem_start = arg; + const void *mem_end = (const char*) arg + mem_size; + const unw_word_t *paddr = (const unw_word_t*) addr; + + if ((void*) paddr < mem_start || (void*) paddr > mem_end) + { + return -1; + } + + *val = *paddr; + return 0; +} + +//! Stub implementation of get_proc_name - returns offset to start of procedure +static int +get_proc_name (unw_addr_space_t as, unw_word_t ip, char *buf, size_t len, unw_word_t *offp, + void *arg) +{ + *offp = ip - (unw_word_t) arg; + return 0; +} + +int +main () +{ + struct unw_addr_space mock_address_space; + mock_address_space.acc.access_mem = &access_mem; + mock_address_space.acc.get_proc_name = &get_proc_name; + + frame_state_t fs; + unw_cursor_t cursor; + struct cursor *c = (struct cursor *) &cursor; + c->dwarf.as = &mock_address_space; + + /* STP_MOV_start procedure */ + { + int IpStp = 0; + int IpMov = 1; + int IpLdp1 = 4; + int IpLdp2 = 7; + + // 0000000000418254 : + unsigned int instructions[9] = { + 0xa9be7bfd, // stp x29, x30, [sp,#-32]! <= FP+LR stored + 0x910003fd, // mov x29, sp <= FP updated + 0xa90153f3, // stp x19, x20, [sp,#16] + // some instructions skipped + 0xa94153f3, // ldp x19, x20, [sp,#16] + 0xa8c27bfd, // ldp x29, x30, [sp],#32 <= FP+LR retrieved + 0x17ffff33, // b 417f50 + // some instructions skipped + 0xa94153f3, // ldp x19, x20, [sp,#16] + 0xa8c27bfd, // ldp x29, x30, [sp],#32 <= FP+LR retrieved + 0x1400de12, // b 44fb08 + }; + procedure_size = 9; + + c->dwarf.as_arg = &instructions; + + /* IP is pointing to instruction that stores FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpStp); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to instruction that updates the FP */ + c->dwarf.ip = (unw_word_t) (instructions+IpMov); + fs = get_frame_state(&cursor); + if (fs.loc != AT_SP_OFFSET || fs.offset != 0) return -1; + + /* IP is pointing to instruction after FP was updated */ + c->dwarf.ip = (unw_word_t) (instructions+IpMov+1); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to first instruction that retrieves FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp1); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to instruction after first retrieval of FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp1+1); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to second instruction that retrieves FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp2); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to instruction after second retrieval of FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp2+1); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + } + + /* STP_start_MOV_later procedure */ + { + int IpStp = 0; + int IpMov = 2; + int IpLdp = 5; + + // 00000000004181b4 : + unsigned int instructions[7] = { + 0xa9bd7bfd, // stp x29, x30, [sp,#-48]! <= FP+LR stored + 0xf0001740, // adrp x0, 703000 + 0x910003fd, // mov x29, sp <= FP updated + 0xf943cc00, // ldr x0, [x0,#1944] + // some instructions skipped + 0xf9400bf3, // ldr x19, [sp,#16] + 0xa8c37bfd, // ldp x29, x30, [sp],#48 <= FP+LR retrieved + 0xd65f03c0, // ret + }; + procedure_size = 7; + + c->dwarf.as_arg = &instructions; + + /* IP is pointing to instruction that stores FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpStp); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to instruction after FP and LR are stored */ + c->dwarf.ip = (unw_word_t) (instructions+IpStp+1); + fs = get_frame_state(&cursor); + if (fs.loc != AT_SP_OFFSET || fs.offset != 0) return -1; + + /* IP is pointing to instruction that updates the FP */ + c->dwarf.ip = (unw_word_t) (instructions+IpMov); + fs = get_frame_state(&cursor); + if (fs.loc != AT_SP_OFFSET || fs.offset != 0) return -1; + + /* IP is pointing to instruction after FP was updated */ + c->dwarf.ip = (unw_word_t) (instructions+IpMov+1); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to instruction that retrieves FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to instruction after retrieval of FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp+1); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + } + + /* STP_MOV_later procedure */ + { + int IpStp = 3; + int IpMov = 4; + int IpLdp = 7; + + // 0000000000418370 : + uint32_t instructions[9] = { + 0xb941fc01, // ldr w1, [x0,#508] + // some instructions skipped + 0xd65f03c0, // ret + // some instructions skipped + 0x34ffffa4, // cbz w4, 41838c + 0xa9be7bfd, // stp x29, x30, [sp,#-32] <= FP+LR stored + 0x910003fd, // mov x29, sp <= FP updated + 0xf9000bf3, // str x19, [sp,#16] + 0xf9400bf3, // ldr x19, [sp,#16] + 0xa8c27bfd, // ldp x29, x30, [sp],#32 <= FP+LR retrieved + 0xd65f03c0, // ret + }; + procedure_size = 9; + + c->dwarf.as_arg = &instructions; + + /* IP is pointing to start of procedure */ + c->dwarf.ip = (unw_word_t) (instructions); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to instruction that stores FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpStp); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to instruction that updates the FP */ + c->dwarf.ip = (unw_word_t) (instructions+IpMov); + fs = get_frame_state(&cursor); + if (fs.loc != AT_SP_OFFSET || fs.offset != 0) return -1; + + /* IP is pointing to instruction after FP was updated */ + c->dwarf.ip = (unw_word_t) (instructions+IpMov+1); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to instruction that retrieves FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to instruction after FP and LR are retrieved */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp+1); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + } + + /* STP_POS_OFFSET procedure */ + { + int IpStp = 3; + int IpAdd = 4; + int IpLdp = 7; + + // 000000000046d1d8 : + unsigned int instructions[9] = { + 0xd10083ff, // sub sp, sp, #0x20 + 0xd2800007, // mov x7, #0x0 // #0 + // some instructions skipped + 0xd2800003, // mov x3, #0x0 // #0 + 0xa9017bfd, // stp x29, x30, [sp,#16] + 0x910043fd, // add x29, sp, #0x10 + 0xb90003ff, // str wzr, [sp] + // some instructions skipped + 0x910003bf, // mov sp, x29 + 0xa8c17bfd, // ldp x29, x30, [sp],#16 + 0xd65f03c0, // ret + }; + procedure_size = 9; + + c->dwarf.as_arg = &instructions; + + /* IP is pointing to start of procedure */ + c->dwarf.ip = (unw_word_t) (instructions); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to instruction that stores FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpStp); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to instruction that updates the FP */ + c->dwarf.ip = (unw_word_t) (instructions+IpAdd); + fs = get_frame_state(&cursor); + if (fs.loc != AT_SP_OFFSET || fs.offset != 16) return -1; + + /* IP is pointing to instruction after FP was updated */ + c->dwarf.ip = (unw_word_t) (instructions+IpAdd+1); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to instruction that retrieves FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to instruction after FP and LR are retrieved */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp+1); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + } + + /* STP_NEG_OFFSET procedure */ + { + int IpStp = 3; + int IpAdd = 4; + int IpLdp = 7; + + // Artificial example based on PyEval_EvalCode with negative offset STP + unsigned int instructions[9] = { + 0xd10083ff, // sub sp, sp, #0x20 + 0xd2800007, // mov x7, #0x0 // #0 + // some instructions skipped + 0xd2800003, // mov x3, #0x0 // #0 + 0xa9217bfd, // stp x29, x30, [sp,#-16] + 0x910043fd, // add x29, sp, #0x10 + 0xb90003ff, // str wzr, [sp] + // some instructions skipped + 0x910003bf, // mov sp, x29 + 0xa8c17bfd, // ldp x29, x30, [sp],#16 + 0xd65f03c0, // ret + }; + procedure_size = 9; + + c->dwarf.as_arg = &instructions; + + /* IP is pointing to start of procedure */ + c->dwarf.ip = (unw_word_t) (instructions); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to instruction that stores FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpStp); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to instruction that updates the FP */ + c->dwarf.ip = (unw_word_t) (instructions+IpAdd); + fs = get_frame_state(&cursor); + if (fs.loc != AT_SP_OFFSET || fs.offset != -16) return -1; + + /* IP is pointing to instruction after FP was updated */ + c->dwarf.ip = (unw_word_t) (instructions+IpAdd+1); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to instruction that retrieves FP and LR */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp); + fs = get_frame_state(&cursor); + if (fs.loc != AT_FP || fs.offset != 0) return -1; + + /* IP is pointing to instruction after FP and LR are retrieved */ + c->dwarf.ip = (unw_word_t) (instructions+IpLdp+1); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + } + + /* PLT_entry procedure */ + { + // 0000000000417760 : + unsigned int instructions[4] = { + 0x900013d0, // adrp x16, 68f000 + 0xf942a211, // ldr x17, [x16,#1344] + 0x91150210, // add x16, x16, #0x540 + 0xd61f0220, // br x17 + }; + procedure_size = 4; + + c->dwarf.as_arg = &instructions; + + /* IP is pointing to start of procedure */ + c->dwarf.ip = (unw_word_t) (instructions); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to end of procedure */ + c->dwarf.ip = (unw_word_t) (instructions+procedure_size-1); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + } + + /* no_STP_MOV procedure */ + { + // 000000000041ddf0 : + uint32_t instructions[9] = { + 0xb0001641, // adrp x1, 6e6000 + 0x90000d00, // adrp x0, 5bd000 <_PyImport_StandardFiletab+0x1468> + 0x913d4023, // add x3, x1, #0xf50 + 0x911b4000, // add x0, x0, #0x6d0 + 0x91330062, // add x2, x3, #0xcc0 + 0x91374061, // add x1, x3, #0xdd0 + 0x52807ea4, // mov w4, #0x3f5 + 0xd2800003, // mov x3, #0x0 + 0x1400bccc, // b 44d140 + }; + procedure_size = 9; + + c->dwarf.as_arg = &instructions; + + /* IP is pointing to start of procedure */ + c->dwarf.ip = (unw_word_t) (instructions); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + + /* IP is pointing to end of procedure */ + c->dwarf.ip = (unw_word_t) (instructions+procedure_size-1); + fs = get_frame_state(&cursor); + if (fs.loc != NONE || fs.offset != 0) return -1; + } + + return 0; +} diff -Nru libunwind-1.7.2/tests/aarch64-test-plt.c libunwind-1.8.1/tests/aarch64-test-plt.c --- libunwind-1.7.2/tests/aarch64-test-plt.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/tests/aarch64-test-plt.c 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,175 @@ +/* + * Unittest AArch64 is_plt_entry function by inspecting output at + * different points in a mock PLT address space. + */ + +#include "dwarf.h" +#include "libunwind_i.h" + +int unw_is_signal_frame (unw_cursor_t *cursor) { return 0; } +int dwarf_step (struct dwarf_cursor *c) { return 0; } +#include "aarch64/Gstep.c" + +enum +{ + ip_guard0, + ip_adrp, + ip_ldr, + ip_add, + ip_br, + ip_guard1, + + ip_program_end +}; + +/* Mock access_mem implementation */ +static int +access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, + void *arg) +{ + if (write != 0) + return -1; + + const size_t mem_size = ip_program_end * sizeof(uint32_t); + const void *mem_start = arg; + const void *mem_end = (const char*) arg + mem_size; + const unw_word_t *paddr = (const unw_word_t*) addr; + + if ((void*) paddr < mem_start || (void*) paddr > mem_end) + { + return -1; + } + + *val = *paddr; + return 0; +} + +int +main () +{ + if (target_is_big_endian()) + return 77; + + const uint32_t plt_instructions[ip_program_end] = { + 0xDEADBEEF, + 0xf0000990, // adrp x16, 540000 + 0xf9400a11, // ldr x17, [x16,#16] + 0x91004210, // add x16, x16, #0x10 + 0xd61f0220, // br x17 + 0xDEADBEEF, + }; + + uint32_t test_instructions[ip_program_end]; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + struct unw_addr_space mock_address_space; + mock_address_space.big_endian = 0; + mock_address_space.acc.access_mem = &access_mem; + + struct dwarf_cursor c; + c.as = &mock_address_space; + c.as_arg = &test_instructions; + + /* ip at adrp */ + c.ip = (unw_word_t) (test_instructions + ip_adrp); + if (is_plt_entry(&c) == 0) return -1; + + /* adrp uses different offset */ + test_instructions[ip_adrp] = 0x90272990; + if (is_plt_entry(&c) == 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ldr uses different offset */ + test_instructions[ip_ldr] = 0xf948be11; + if (is_plt_entry(&c) == 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* add uses different offset */ + test_instructions[ip_add] = 0x91726210; + if (is_plt_entry(&c) == 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_ldr is not a ldr instruction */ + test_instructions[ip_ldr] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_add is not an add instruction */ + test_instructions[ip_add] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_br is not a br instruction */ + test_instructions[ip_br] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip at ldr */ + c.ip = (unw_word_t) (test_instructions + ip_ldr); + if (is_plt_entry(&c) == 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_adrp is not an adrp instruction */ + test_instructions[ip_adrp] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_add is not an add instruction */ + test_instructions[ip_add] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_br is not a br instruction */ + test_instructions[ip_br] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip at add */ + c.ip = (unw_word_t) (test_instructions + ip_add); + if (is_plt_entry(&c) == 0) return -1; + + /* ip_adrp is not an adrp instruction */ + test_instructions[ip_adrp] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_ldr is not a ldr instruction */ + test_instructions[ip_ldr] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_br is not a br instruction */ + test_instructions[ip_br] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip at br */ + c.ip = (unw_word_t) (test_instructions + ip_br); + if (is_plt_entry(&c) == 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_adrp is not an adrp instruction */ + test_instructions[ip_adrp] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_ldr is not a ldr instruction */ + test_instructions[ip_ldr] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_add is not an add instruction */ + test_instructions[ip_add] = 0xf154f00d; + if (is_plt_entry(&c) != 0) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip at non-PLT instruction */ + c.ip = (unw_word_t) (test_instructions + ip_guard0); + if (is_plt_entry(&c)) return -1; + + /* ip at another non-PLT instruction */ + c.ip = (unw_word_t) (test_instructions + ip_guard1); + if (is_plt_entry(&c)) return -1; + + return 0; +} diff -Nru libunwind-1.7.2/tests/check-namespace.sh.in libunwind-1.8.1/tests/check-namespace.sh.in --- libunwind-1.7.2/tests/check-namespace.sh.in 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/check-namespace.sh.in 2024-02-20 19:54:51.000000000 +0000 @@ -1,4 +1,25 @@ #!/bin/sh +# +# This file is part of libunwind. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# verbose=false if [ "$1" = "-v" ]; then verbose=true @@ -10,8 +31,8 @@ os=@target_os@ num_errors=0 -LIBUNWIND=../src/.libs/libunwind.so -LIBUNWIND_GENERIC=../src/.libs/libunwind-${plat}.so +: ${LIBUNWIND:=../src/.libs/libunwind.so} +: ${LIBUNWIND_GENERIC:=../src/.libs/libunwind-${plat}.so} fetch_symtab () { filename=$1 @@ -72,31 +93,36 @@ # Ignore symbols generated by the ARM Linux default linker script. # For details see the binutils sources (src/ld/emulparams/armelf_linux.sh). - if [ ${plat} = "arm" ]; then - ignore __bss_start__ - ignore __bss_end__ - ignore __end__ - ignore _bss_end__ - fi - - if [ ${plat} = "mips" ]; then - ignore _fbss - ignore _fdata - ignore _ftext - ignore _gp - fi - - if [ ${plat} = "loongarch64" ]; then - ignore _fbss - ignore _fdata - ignore _ftext - ignore _gp - fi + case "$plat}" in + arm*|aarch64*) + ignore __bss_start__ + ignore __bss_end__ + ignore __end__ + ignore _bss_end__ + ;; + mips*) + ignore _fbss + ignore _fdata + ignore _ftext + ignore _gp + ;; + loongarch64) + ignore _fbss + ignore _fdata + ignore _ftext + ignore _gp + ;; + esac - if [ ${os} = "solaris2.11" ]; then - ignore _PROCEDURE_LINKAGE_TABLE_ - ignore _etext - fi + case "${os}" in + solaris2.11) + ignore _PROCEDURE_LINKAGE_TABLE_ + ignore _etext + ;; + nto*) + ignore _btext + ;; + esac } check_local_unw_abi () { @@ -110,6 +136,8 @@ match _UL${plat}_get_proc_info_in_range match _UL${plat}_get_proc_name match _UL${plat}_get_proc_name_by_ip + match _UL${plat}_get_elf_filename + match _UL${plat}_get_elf_filename_by_ip match _UL${plat}_get_reg match _UL${plat}_get_save_loc match _UL${plat}_init_local @@ -118,6 +146,7 @@ match _UL${plat}_is_signal_frame match _UL${plat}_local_addr_space match _UL${plat}_resume + match _UL${plat}_set_iterate_phdr_function match _UL${plat}_set_caching_policy match _UL${plat}_set_cache_size match _UL${plat}_set_reg @@ -177,14 +206,6 @@ match _UL${plat}_dwarf_search_unwind_table match _UL${plat}_dwarf_find_unwind_table ;; - tilegx) - match _U${plat}_getcontext - match _U${plat}_is_fpreg - match _UL${plat}_dwarf_search_unwind_table - match _UL${plat}_dwarf_find_unwind_table - match _UL${plat}_local_addr_space_init - match ${plat}_lock - ;; s390x) match _U${plat}_getcontext match _U${plat}_is_fpreg @@ -231,6 +252,8 @@ match _U${plat}_get_proc_info_in_range match _U${plat}_get_proc_name match _U${plat}_get_proc_name_by_ip + match _U${plat}_get_elf_filename + match _U${plat}_get_elf_filename_by_ip match _U${plat}_get_reg match _U${plat}_get_save_loc match _U${plat}_init_local @@ -240,6 +263,7 @@ match _U${plat}_local_addr_space match _U${plat}_regname match _U${plat}_resume + match _U${plat}_set_iterate_phdr_function match _U${plat}_set_caching_policy match _U${plat}_set_cache_size match _U${plat}_set_fpreg @@ -248,6 +272,13 @@ match _U${plat}_strerror case ${plat} in + aarch64) + match _U${plat}_is_fpreg + match _U${plat}_get_elf_image + match _U${plat}_get_exe_image_path + match _U${plat}_dwarf_search_unwind_table + match _U${plat}_dwarf_find_unwind_table + ;; arm) match _U${plat}_is_fpreg match _U${plat}_get_elf_image @@ -297,15 +328,6 @@ match _U${plat}_dwarf_search_unwind_table match _U${plat}_dwarf_find_unwind_table ;; - tilegx) - match _U${plat}_dwarf_search_unwind_table - match _U${plat}_dwarf_find_unwind_table - match _U${plat}_get_elf_image - match _U${plat}_get_exe_image_path - match _U${plat}_is_fpreg - match _U${plat}_local_addr_space_init - match ${plat}_lock - ;; s390x) match _U${plat}_is_fpreg match _U${plat}_get_elf_image diff -Nru libunwind-1.7.2/tests/flush-cache.S libunwind-1.8.1/tests/flush-cache.S --- libunwind-1.7.2/tests/flush-cache.S 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/flush-cache.S 2024-02-20 19:54:51.000000000 +0000 @@ -77,22 +77,6 @@ .globl flush_cache flush_cache: bx lr -#elif defined(__tilegx__) - .text - .globl flush_cache -flush_cache: - - andi r0, r0, -64 -1: { - flush r0 ; - addi r0, r0, 64 - } - { - bgtz r1, 1b ; - addi r1, r1, -64 - } - jrp lr -#else # error Need flush_cache code for this architecture. #endif diff -Nru libunwind-1.7.2/tests/ident.c libunwind-1.8.1/tests/ident.c --- libunwind-1.7.2/tests/ident.c 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/tests/ident.c 2024-02-20 19:54:51.000000000 +0000 @@ -1,3 +1,27 @@ +/* libunwind - a platform-independent unwind library + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "ident.h" + long f (long val) { diff -Nru libunwind-1.7.2/tests/ident.h libunwind-1.8.1/tests/ident.h --- libunwind-1.7.2/tests/ident.h 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/tests/ident.h 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,28 @@ +/* libunwind - a platform-independent unwind library + * + * This file is part of libunwind. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef LIBUNWIND_TESTS_IDENT_H +#define LIBUNWIND_TESTS_IDENT_H + +extern long f (long val); + +#endif /* LIBUNWIND_TESTS_IDENT_H */ diff -Nru libunwind-1.7.2/tests/mapper.c libunwind-1.8.1/tests/mapper.c --- libunwind-1.7.2/tests/mapper.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/mapper.c 2024-02-20 19:54:51.000000000 +0000 @@ -43,6 +43,15 @@ # define MAP_NORESERVE 0 #endif +void __attribute__((noinline)) push_some_stacks(int n) +{ + if (n >= 1) + { + push_some_stacks(n - 1); + push_some_stacks(n - 1); + } +} + int main (void) { @@ -71,7 +80,7 @@ printf ("Turning on single-stepping...\n"); kill (getpid (), SIGUSR1); /* tell test-ptrace to start single-stepping */ - printf ("Va bene?\n"); + push_some_stacks (4); kill (getpid (), SIGUSR2); /* tell test-ptrace to stop single-stepping */ printf ("Turned single-stepping off...\n"); return 0; diff -Nru libunwind-1.7.2/tests/ppc64-test-plt.c libunwind-1.8.1/tests/ppc64-test-plt.c --- libunwind-1.7.2/tests/ppc64-test-plt.c 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/tests/ppc64-test-plt.c 2024-02-21 13:39:50.000000000 +0000 @@ -0,0 +1,164 @@ +/* + * Unittest PPC64 is_plt_entry function by inspecting output at + * different points in a mock PLT address space. + */ + +#include "dwarf.h" +#include "libunwind_i.h" + +#undef unw_get_accessors_int +unw_accessors_t *unw_get_accessors_int (unw_addr_space_t) { return NULL; } +int dwarf_step (struct dwarf_cursor*) { return 0; } +#include "ppc64/Gstep.c" + +enum +{ + ip_guard0, + ip_std, + ip_ld, + ip_mtctr, + ip_bctr, + ip_guard1, + + ip_program_end +}; + +/* Mock access_mem implementation */ +static int +access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, + void *arg) +{ + if (write != 0) + return -1; + + const size_t mem_size = ip_program_end * sizeof(uint32_t); + const void *mem_start = arg; + const void *mem_end = (const char*) arg + mem_size; + const unw_word_t *paddr = (const unw_word_t*) addr; + + if ((void*) paddr < mem_start || (void*) paddr > mem_end) + { + return -1; + } + + *val = *paddr; + return 0; +} + +int +main () +{ + if (target_is_big_endian()) + return 77; + + const uint32_t plt_instructions[ip_program_end] = + { + 0xdeadbeef, + 0xf8410018, // std r2,24(r1) + 0xe9828730, // ld r12,-30928(r2) + 0x7d8903a6, // mtctr r12 + 0x4e800420, // bctr + 0xdeadbeef, + }; + uint32_t test_instructions[ip_program_end]; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + struct unw_addr_space mock_address_space; + mock_address_space.big_endian = 0; + mock_address_space.acc.access_mem = &access_mem; + + struct dwarf_cursor c; + c.as = &mock_address_space; + c.as_arg = &test_instructions; + + /* ip at std r2,24(r1) */ + c.ip = (unw_word_t) (test_instructions + ip_std); + if (!is_plt_entry(&c)) return -1; + + /* ld uses a different offset */ + test_instructions[ip_ld] = 0xe9820000; + if (!is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_ld is not a ld instruction */ + test_instructions[ip_ld] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_mtctr is not a mtctr instruction */ + test_instructions[ip_mtctr] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_bctr is not a bctr instruction */ + test_instructions[ip_bctr] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip at ld r12,-30928(r2) */ + c.ip = (unw_word_t) (test_instructions + ip_ld); + if (!is_plt_entry(&c)) return -1; + + /* ip_std is not a std instruction */ + test_instructions[ip_std] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_mtctr is not a mtctr instruction */ + test_instructions[ip_mtctr] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_bctr is not a bctr instruction */ + test_instructions[ip_bctr] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip at mtctr r12 */ + c.ip = (unw_word_t) (test_instructions + ip_mtctr); + if (!is_plt_entry(&c)) return -1; + + /* ip_std is not a std instruction */ + test_instructions[ip_std] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_ld is not a ld instruction */ + test_instructions[ip_ld] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_bctr is not a bctr instruction */ + test_instructions[ip_bctr] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip at bctr */ + c.ip = (unw_word_t) (test_instructions + ip_bctr); + if (!is_plt_entry(&c)) return -1; + + /* ip_std is not a std instruction */ + test_instructions[ip_std] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_ld is not a ld instruction */ + test_instructions[ip_ld] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip_mtctr is not a mtctr instruction */ + test_instructions[ip_mtctr] = 0xf154f00d; + if (is_plt_entry(&c)) return -1; + memcpy(test_instructions, plt_instructions, sizeof(test_instructions)); + + /* ip at non-PLT instruction */ + c.ip = (unw_word_t) (test_instructions + ip_guard0); + if (is_plt_entry(&c)) return -1; + + /* ip at another non-PLT instruction */ + c.ip = (unw_word_t) (test_instructions + ip_guard1); + if (is_plt_entry(&c)) return -1; + + return 0; +} diff -Nru libunwind-1.7.2/tests/run-check-namespace libunwind-1.8.1/tests/run-check-namespace --- libunwind-1.7.2/tests/run-check-namespace 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/tests/run-check-namespace 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -#!/bin/sh -chmod +x ./check-namespace.sh -./check-namespace.sh $* diff -Nru libunwind-1.7.2/tests/run-coredump-unwind libunwind-1.8.1/tests/run-coredump-unwind --- libunwind-1.7.2/tests/run-coredump-unwind 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/tests/run-coredump-unwind 2024-02-20 19:54:51.000000000 +0000 @@ -20,7 +20,7 @@ nm "$debuginfo" --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t") print $1 }' | sort > "$funcsyms" # Keep all the function symbols not already in the dynamic symbol table comm -13 "$dynsyms" "$funcsyms" > "$keep_symbols" - # Copy the full debuginfo, keeping only a minumal set of symbols and removing some unnecessary sections + # Copy the full debuginfo, keeping only a minimal set of symbols and removing some unnecessary sections objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols="$keep_symbols" "$debuginfo" "$mini_debuginfo" &> /dev/null wait #Inject the compressed data into the .gnu_debugdata section of the original binary diff -Nru libunwind-1.7.2/tests/run-ptrace-mapper libunwind-1.8.1/tests/run-ptrace-mapper --- libunwind-1.7.2/tests/run-ptrace-mapper 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/tests/run-ptrace-mapper 2024-02-20 19:54:51.000000000 +0000 @@ -1,2 +1,24 @@ #!/bin/sh -./test-ptrace -c -n -t ./mapper $* +# +# This file is part of libunwind. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +dir="$(dirname $0)" +"${dir}/test-ptrace" -c -n -t "${dir}/mapper" $* diff -Nru libunwind-1.7.2/tests/run-ptrace-misc libunwind-1.8.1/tests/run-ptrace-misc --- libunwind-1.7.2/tests/run-ptrace-misc 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/tests/run-ptrace-misc 2024-02-20 19:54:51.000000000 +0000 @@ -1,2 +1,24 @@ #!/bin/sh -./test-ptrace -c -t ./test-ptrace-misc +# +# This file is part of libunwind. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +dir="$(dirname $0)" +"${dir}/test-ptrace" -c -t "${dir}/test-ptrace-misc" diff -Nru libunwind-1.7.2/tests/test-async-sig.c libunwind-1.8.1/tests/test-async-sig.c --- libunwind-1.7.2/tests/test-async-sig.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/test-async-sig.c 2024-02-20 19:54:51.000000000 +0000 @@ -60,8 +60,8 @@ int recurcount; #endif -#define panic(args...) \ - { ++nerrors; fprintf (stderr, args); return; } +#define panic(...) \ + { ++nerrors; fprintf (stderr, __VA_ARGS__); return; } static void do_backtrace (int may_print, int get_proc_name) @@ -157,7 +157,7 @@ printf ("SUCCESS.\n"); exit (0); } - setitimer (ITIMER_VIRTUAL, &interval, NULL); + setitimer (ITIMER_REAL, &interval, NULL); } int @@ -174,13 +174,13 @@ memset (&act, 0, sizeof (act)); act.sa_handler = sighandler; act.sa_flags = SA_SIGINFO; - sigaction (SIGVTALRM, &act, NULL); + sigaction (SIGALRM, &act, NULL); - setitimer (ITIMER_VIRTUAL, &interval, NULL); + setitimer (ITIMER_REAL, &interval, NULL); while (1) { - if (0 && verbose) + if (verbose) printf ("%s: starting backtrace\n", __FUNCTION__); do_backtrace (0, (i++ % 100) == 0); if (nerrors > nerrors_max) diff -Nru libunwind-1.7.2/tests/test-coredump-unwind.c libunwind-1.8.1/tests/test-coredump-unwind.c --- libunwind-1.7.2/tests/test-coredump-unwind.c 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/tests/test-coredump-unwind.c 2024-02-21 13:39:50.000000000 +0000 @@ -326,16 +326,23 @@ if (ret < 0) error_msg_and_die("unw_get_proc_info(ip=0x%lx) failed: ret=%d\n", (long) ip, ret); - if (!testcase) { - char proc_name[128]; - unw_word_t off; - unw_get_proc_name(&c, proc_name, sizeof(proc_name), &off); + if (!testcase) + { + char proc_name[128]; + unw_word_t off; + unw_get_proc_name(&c, proc_name, sizeof(proc_name), &off); + + printf("\tip=0x%08lx proc=%08lx-%08lx handler=0x%08lx lsda=0x%08lx %s\n", + (long) ip, + (long) pi.start_ip, (long) pi.end_ip, + (long) pi.handler, (long) pi.lsda, proc_name); - printf("\tip=0x%08lx proc=%08lx-%08lx handler=0x%08lx lsda=0x%08lx %s\n", - (long) ip, - (long) pi.start_ip, (long) pi.end_ip, - (long) pi.handler, (long) pi.lsda, proc_name); - } + char filename[PATH_MAX]; + unw_word_t file_offset; + ret = unw_get_elf_filename (&c, filename, sizeof (filename), &file_offset); + if (ret == UNW_ESUCCESS) + printf ("\t[%s+0x%lx]\n", filename, (long) file_offset); + } if (testcase && test_cur < TEST_FRAMES) { diff -Nru libunwind-1.7.2/tests/test-init-remote.c libunwind-1.8.1/tests/test-init-remote.c --- libunwind-1.7.2/tests/test-init-remote.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/test-init-remote.c 2024-02-20 19:54:51.000000000 +0000 @@ -39,8 +39,8 @@ #include #include -#define panic(args...) \ - { fprintf (stderr, args); exit (-1); } +#define panic(...) \ + { fprintf (stderr, __VA_ARGS__); exit (-1); } int verbose; @@ -63,14 +63,19 @@ unw_get_reg (&cursor, UNW_REG_SP, &sp); buf[0] = '\0'; if (unw_get_proc_name (&cursor, name, sizeof (name), &off) == 0) - { - if (off) - snprintf (buf, sizeof (buf), "<%s+0x%lx>", name, (long) off); - else - snprintf (buf, sizeof (buf), "<%s>", name); - } + { + if (off) + snprintf (buf, sizeof (buf), "<%s+0x%lx>", name, (long) off); + else + snprintf (buf, sizeof (buf), "<%s>", name); + } if (verbose) - printf ("%016lx %-32s (sp=%016lx)\n", (long) ip, buf, (long) sp); + printf ("%016lx %-32s (sp=%016lx)\n", (long) ip, buf, (long) sp); + + char filename[128]; + unw_word_t file_offset; + if (unw_get_elf_filename (&cursor,filename, sizeof (filename), &file_offset) == UNW_ESUCCESS) + printf (" [%s+0x%lx]\n", filename, (long) file_offset); ret = unw_step (&cursor); if (ret < 0) diff -Nru libunwind-1.7.2/tests/test-mem.c libunwind-1.8.1/tests/test-mem.c --- libunwind-1.7.2/tests/test-mem.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/test-mem.c 2024-02-20 19:54:51.000000000 +0000 @@ -35,8 +35,8 @@ #include -#define panic(args...) \ - { fprintf (stderr, args); exit (-1); } +#define panic(...) \ + { fprintf (stderr, __VA_ARGS__); exit (-1); } int verbose; @@ -80,23 +80,25 @@ memset (&cursor, 0, sizeof (cursor)); memset (&uc, 0, sizeof (uc)); - return sprintf (string, "hello %p %p\n", &cursor, &uc); + return sprintf (string, "hello %p %p\n", (void *)&cursor, (void *)&uc); } int main (int argc, char **argv UNUSED) { - struct rlimit rlim; + struct rlimit rlim UNUSED; verbose = argc > 1; if (consume_some_stack_space () > 9999) exit (-1); /* can't happen, but don't let the compiler know... */ +#if !defined(__QNX__) rlim.rlim_cur = 0; rlim.rlim_max = RLIM_INFINITY; setrlimit (RLIMIT_DATA, &rlim); setrlimit (RLIMIT_AS, &rlim); +#endif /* !defined(__QNX__) */ do_backtrace (); return 0; diff -Nru libunwind-1.7.2/tests/test-proc-info.c libunwind-1.8.1/tests/test-proc-info.c --- libunwind-1.7.2/tests/test-proc-info.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/test-proc-info.c 2024-02-20 19:54:51.000000000 +0000 @@ -40,8 +40,8 @@ int errors; -#define panic(args...) \ - { ++errors; fprintf (stderr, args); return -1; } +#define panic(...) \ + { ++errors; fprintf (stderr, __VA_ARGS__); return -1; } static int find_proc_info (unw_addr_space_t as UNUSED, diff -Nru libunwind-1.7.2/tests/test-ptrace-misc.c libunwind-1.8.1/tests/test-ptrace-misc.c --- libunwind-1.7.2/tests/test-ptrace-misc.c 2023-07-30 11:32:03.000000000 +0000 +++ libunwind-1.8.1/tests/test-ptrace-misc.c 2024-02-20 19:54:51.000000000 +0000 @@ -33,6 +33,8 @@ #include +#include "ident.h" + pid_t self; int global[64]; @@ -68,7 +70,6 @@ int bar (int v) { - extern long f (long); int arr[1] = { v }; uintptr_t r; diff -Nru libunwind-1.7.2/tests/test-ptrace.c libunwind-1.8.1/tests/test-ptrace.c --- libunwind-1.7.2/tests/test-ptrace.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/test-ptrace.c 2024-02-20 19:54:51.000000000 +0000 @@ -55,6 +55,7 @@ int nerrors; int verbose; int print_names = 1; +int print_elf_filename; enum { @@ -64,8 +65,8 @@ } trace_mode = SYSCALL; -#define panic(args...) \ - do { fprintf (stderr, args); ++nerrors; } while (0) +#define panic(...) \ + do { fprintf (stderr, __VA_ARGS__); ++nerrors; } while (0) static unw_addr_space_t as; static struct UPT_info *ui; @@ -111,7 +112,7 @@ printf ("%016lx %-32s (sp=%016lx)\n", (long) ip, buf, (long) sp); } - if ((ret = unw_get_proc_info (&c, &pi)) < 0) + if ((ret = unw_get_proc_info (&c, &pi)) < 0 && ret != -UNW_ENOINFO) /* It's possible unw_get_proc_info don't return information */ panic ("unw_get_proc_info(ip=0x%lx) failed: ret=%d\n", (long) ip, ret); else if (verbose) printf ("\tproc=%016lx-%016lx\n\thandler=%lx lsda=%lx", @@ -131,6 +132,14 @@ if (verbose) printf ("\n"); + if (print_elf_filename) + { + if ((ret = unw_get_elf_filename(&c, buf, sizeof (buf), &off)) != UNW_ESUCCESS) + panic ("unw_get_elf_filename(ip=0x%lx) failed: ret=%d\n", (long) ip, ret); + else if (verbose) + printf ("\t[%s+0x%lx]\n", buf, (long) off); + } + ret = unw_step (&c); if (ret < 0) { @@ -178,8 +187,11 @@ if (argc == 1) { +#ifdef HAVE_EXECVPE static char *args[] = { "self", "ls", "/", NULL }; - +#else + static char *args[] = { "self", "/bin/ls", "/", NULL }; +#endif /* automated test case */ argv = args; @@ -207,6 +219,9 @@ else if (strcmp (argv[optind], "-n") == 0) /* Don't look-up and print symbol names. */ ++optind, print_names = 0; + else if (strcmp (argv[optind], "-f") == 0) + /* Print elf filenames. */ + ++optind, print_elf_filename = 1; else fprintf(stderr, "unrecognized option: %s\n", argv[optind++]); if (optind >= argc) @@ -222,21 +237,29 @@ dup2 (open ("/dev/null", O_WRONLY), 1); #if HAVE_DECL_PTRACE_TRACEME - ptrace (PTRACE_TRACEME, 0, 0, 0); + long stat = ptrace (PTRACE_TRACEME, 0, 0, 0); #elif HAVE_DECL_PT_TRACE_ME - ptrace (PT_TRACE_ME, 0, 0, 0); + int stat = ptrace (PT_TRACE_ME, 0, 0, 0); #else #error Trace me #endif + if (stat == -1) + { + if (verbose) + { + fprintf(stderr, "ptrace() returned %ld errno=%d (%s)\n", (long)stat, errno, strerror(errno)); + } + _exit(77); + } if ((argc > 1) && (optind == argc)) { fprintf(stderr, "Need to specify a command line for the child\n"); exit (-1); } -#ifdef __FreeBSD__ - execve (argv[optind], argv + optind, environ); -#else +#ifdef HAVE_EXECVPE execvpe (argv[optind], argv + optind, environ); +#else + execve (argv[optind], argv + optind, environ); #endif _exit (-1); } @@ -262,6 +285,8 @@ { if (WEXITSTATUS (status) != 0) panic ("child's exit status %d\n", WEXITSTATUS (status)); + if (WEXITSTATUS (status) == 77) + _exit(77); break; } else if (WIFSIGNALED (status)) @@ -333,10 +358,10 @@ if (!state) do_backtrace (); state ^= 1; -#if HAVE_DECL_PTRACE_SYSCALL - ptrace (PTRACE_SYSCALL, target_pid, 0, pending_sig); -#elif HAVE_DECL_PT_SYSCALL +#if HAVE_DECL_PT_SYSCALL ptrace (PT_SYSCALL, target_pid, (caddr_t)1, pending_sig); +#elif HAVE_DECL_PTRACE_SYSCALL + ptrace (PTRACE_SYSCALL, target_pid, 0, pending_sig); #else #error Syscall me #endif diff -Nru libunwind-1.7.2/tests/test-reg-state.c libunwind-1.8.1/tests/test-reg-state.c --- libunwind-1.7.2/tests/test-reg-state.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/test-reg-state.c 2024-02-20 19:54:51.000000000 +0000 @@ -36,8 +36,8 @@ #include #include -#define panic(args...) \ - { fprintf (stderr, args); exit (-1); } +#define panic(...) \ + { fprintf (stderr, __VA_ARGS__); exit (-1); } int verbose; @@ -111,7 +111,7 @@ memset (&cursor, 0, sizeof (cursor)); memset (&uc, 0, sizeof (uc)); - return sprintf (string, "hello %p %p\n", &cursor, &uc); + return sprintf (string, "hello %p %p\n", (void *)&cursor, (void *)&uc); } int @@ -124,9 +124,11 @@ if (consume_some_stack_space () > 9999) exit (-1); /* can't happen, but don't let the compiler know... */ +#if !defined(__QNX__) rlim.rlim_cur = 0; rlim.rlim_max = RLIM_INFINITY; setrlimit (RLIMIT_DATA, &rlim); +#endif /* !defined(__QNX__) */ do_backtrace (); return 0; diff -Nru libunwind-1.7.2/tests/test-runner.in libunwind-1.8.1/tests/test-runner.in --- libunwind-1.7.2/tests/test-runner.in 1970-01-01 00:00:00.000000000 +0000 +++ libunwind-1.8.1/tests/test-runner.in 2024-02-20 19:54:51.000000000 +0000 @@ -0,0 +1,45 @@ +#!/bin/sh +# +# This file is part of libunwind. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# + +test_dir="$(dirname $0)" + +: ${LIBUNWIND:=@LIBDIR@/libunwind.so} +: ${LIBUNWIND_GENERIC:=@LIBDIR@/libunwind-@ARCH@.so} + +count=0 +printf "TAP version 14\n" +for t in @TESTS@; do + "$test_dir/$t" >$t.out 2>$t.err + status=$? + if [ $status = 77 ]; then + printf "%d ok - %s # SKIP\n" $count "$t" + elif [ $status = 0 ]; then + printf "%d ok - %s\n" $count "$t" + elif (echo @XFAIL_TESTS@ | grep -Fqw "$t"); then + printf "%d not ok - %s # TODO\n" $count "$t" + else + printf "%d not ok - %s returned %d\n" $count "$t" $status + fi + count=$(expr $count + 1) +done +printf "1..%d\n" $count diff -Nru libunwind-1.7.2/tests/test-setjmp.c libunwind-1.8.1/tests/test-setjmp.c --- libunwind-1.7.2/tests/test-setjmp.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/test-setjmp.c 2024-02-20 19:54:51.000000000 +0000 @@ -1,6 +1,6 @@ /* libunwind - a platform-independent unwind library Copyright (C) 2003 Hewlett-Packard Co - Contributed by David Mosberger-Tang + Contributed by David Mosberger-Tang Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -39,7 +39,7 @@ static sigjmp_buf sigjbuf; static sigset_t sigset4; -void +NORETURN void raise_longjmp (jmp_buf jbuf, int i, int n) { while (i < n) @@ -58,32 +58,32 @@ for (i = 0; i < 10; ++i) { if ((ret = setjmp (jbuf))) - { - if (verbose) - printf ("%s: secondary setjmp () return, ret=%d\n", - __FUNCTION__, ret); - if (ret != i + 1) - { - fprintf (stderr, "%s: setjmp() returned %d, expected %d\n", - __FUNCTION__, ret, i + 1); - ++nerrors; - } - continue; - } + { + if (verbose) + printf ("%s: secondary setjmp () return, ret=%d\n", + __FUNCTION__, ret); + if (ret != i + 1) + { + fprintf (stderr, "%s: setjmp() returned %d, expected %d\n", + __FUNCTION__, ret, i + 1); + ++nerrors; + } + continue; + } if (verbose) - printf ("%s.%d: done with setjmp(); calling children\n", - __FUNCTION__, i + 1); + printf ("%s.%d: done with setjmp(); calling children\n", + __FUNCTION__, i + 1); raise_longjmp (jbuf, 0, i + 1); fprintf (stderr, "%s: raise_longjmp() returned unexpectedly\n", - __FUNCTION__); + __FUNCTION__); ++nerrors; } } -void +NORETURN void raise_siglongjmp (sigjmp_buf jbuf, int i, int n) { while (i < n) @@ -102,26 +102,26 @@ for (i = 0; i < 10; ++i) { if ((ret = sigsetjmp (jbuf, 1))) - { - if (verbose) - printf ("%s: secondary sigsetjmp () return, ret=%d\n", - __FUNCTION__, ret); - if (ret != i + 1) - { - fprintf (stderr, "%s: sigsetjmp() returned %d, expected %d\n", - __FUNCTION__, ret, i + 1); - ++nerrors; - } - continue; - } + { + if (verbose) + printf ("%s: secondary sigsetjmp () return, ret=%d\n", + __FUNCTION__, ret); + if (ret != i + 1) + { + fprintf (stderr, "%s: sigsetjmp() returned %d, expected %d\n", + __FUNCTION__, ret, i + 1); + ++nerrors; + } + continue; + } if (verbose) - printf ("%s.%d: done with sigsetjmp(); calling children\n", - __FUNCTION__, i + 1); + printf ("%s.%d: done with sigsetjmp(); calling children\n", + __FUNCTION__, i + 1); raise_siglongjmp (jbuf, 0, i + 1); fprintf (stderr, "%s: raise_siglongjmp() returned unexpectedly\n", - __FUNCTION__); + __FUNCTION__); ++nerrors; } } @@ -143,7 +143,7 @@ int main (int argc, char **argv UNUSED) { - volatile sigset_t sigset1, sigset2, sigset3; + sigset_t sigset1, sigset2, sigset3; volatile struct sigaction act; if (argc > 1) @@ -172,13 +172,13 @@ sigemptyset ((sigset_t *) &sigset3); sigprocmask (SIG_BLOCK, NULL, (sigset_t *) &sigset3); if (memcmp ((sigset_t *) &sigset3, (sigset_t *) &sigset2, - sizeof (sigset_t)) != 0) - { - fprintf (stderr, "FAILURE: _longjmp() manipulated signal mask!\n"); - ++nerrors; - } + sizeof (sigset_t)) != 0) + { + fprintf (stderr, "FAILURE: _longjmp() manipulated signal mask!\n"); + ++nerrors; + } else if (verbose) - printf ("OK: _longjmp() seems not to change signal mask\n"); + printf ("OK: _longjmp() seems not to change signal mask\n"); } else { @@ -193,14 +193,14 @@ sigemptyset ((sigset_t *) &sigset3); sigprocmask (SIG_BLOCK, NULL, (sigset_t *) &sigset3); if (memcmp ((sigset_t *) &sigset3, (sigset_t *) &sigset1, - sizeof (sigset_t)) != 0) - { - fprintf (stderr, - "FAILURE: siglongjmp() didn't restore signal mask!\n"); - ++nerrors; - } + sizeof (sigset_t)) != 0) + { + fprintf (stderr, + "FAILURE: siglongjmp() didn't restore signal mask!\n"); + ++nerrors; + } else if (verbose) - printf ("OK: siglongjmp() restores signal mask when asked to\n"); + printf ("OK: siglongjmp() restores signal mask when asked to\n"); } else { @@ -215,14 +215,14 @@ sigemptyset ((sigset_t *) &sigset3); sigprocmask (SIG_BLOCK, NULL, (sigset_t *) &sigset3); if (memcmp ((sigset_t *) &sigset3, (sigset_t *) &sigset2, - sizeof (sigset_t)) != 0) - { - fprintf (stderr, - "FAILURE: siglongjmp() changed signal mask!\n"); - ++nerrors; - } + sizeof (sigset_t)) != 0) + { + fprintf (stderr, + "FAILURE: siglongjmp() changed signal mask!\n"); + ++nerrors; + } else if (verbose) - printf ("OK: siglongjmp() leaves signal mask alone when asked to\n"); + printf ("OK: siglongjmp() leaves signal mask alone when asked to\n"); } else { @@ -237,14 +237,14 @@ sigemptyset ((sigset_t *) &sigset3); sigprocmask (SIG_BLOCK, NULL, (sigset_t *) &sigset3); if (memcmp ((sigset_t *) &sigset3, (sigset_t *) &sigset1, - sizeof (sigset_t)) != 0) - { - fprintf (stderr, - "FAILURE: siglongjmp() didn't restore signal mask!\n"); - ++nerrors; - } + sizeof (sigset_t)) != 0) + { + fprintf (stderr, + "FAILURE: siglongjmp() didn't restore signal mask!\n"); + ++nerrors; + } else if (verbose) - printf ("OK: siglongjmp() restores signal mask when asked to\n"); + printf ("OK: siglongjmp() restores signal mask when asked to\n"); } else { @@ -261,14 +261,14 @@ sigemptyset ((sigset_t *) &sigset3); sigprocmask (SIG_BLOCK, NULL, (sigset_t *) &sigset3); if (memcmp ((sigset_t *) &sigset3, (sigset_t *) &sigset4, - sizeof (sigset_t)) != 0) - { - fprintf (stderr, - "FAILURE: siglongjmp() changed signal mask!\n"); - ++nerrors; - } + sizeof (sigset_t)) != 0) + { + fprintf (stderr, + "FAILURE: siglongjmp() changed signal mask!\n"); + ++nerrors; + } else if (verbose) - printf ("OK: siglongjmp() leaves signal mask alone when asked to\n"); + printf ("OK: siglongjmp() leaves signal mask alone when asked to\n"); } else { diff -Nru libunwind-1.7.2/tests/x64-test-dwarf-expressions.S libunwind-1.8.1/tests/x64-test-dwarf-expressions.S --- libunwind-1.7.2/tests/x64-test-dwarf-expressions.S 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/x64-test-dwarf-expressions.S 2024-02-20 19:54:51.000000000 +0000 @@ -76,3 +76,6 @@ ret .cfi_endproc .size DW_CFA_expression_inner,.-DW_CFA_expression_inner + + /* We do not need executable stack. */ + .section .note.GNU-stack,"",@progbits diff -Nru libunwind-1.7.2/tests/x64-unwind-badjmp-signal-frame.c libunwind-1.8.1/tests/x64-unwind-badjmp-signal-frame.c --- libunwind-1.7.2/tests/x64-unwind-badjmp-signal-frame.c 2023-07-30 11:32:29.000000000 +0000 +++ libunwind-1.8.1/tests/x64-unwind-badjmp-signal-frame.c 2024-02-20 19:54:51.000000000 +0000 @@ -26,9 +26,8 @@ #include #include #include -#include #include -#include +#include #include #ifdef HAVE_SYS_PTRACE_H @@ -37,12 +36,13 @@ #define UNW_LOCAL_ONLY #include +#include "compiler.h" /* * unwind in the signal handler checking the backtrace is correct * after a bad jump. */ -void handle_sigsegv(int signal, siginfo_t *info, void *ucontext) +void handle_sigsegv(int signal UNUSED, siginfo_t *info UNUSED, void *ucontext UNUSED) { /* * 0 = success @@ -57,6 +57,9 @@ int found_signal_frame = 0; int i = 0; char *names[] = { +#if defined __FreeBSD__ + "", +#endif "", "main", }; @@ -105,7 +108,7 @@ void (*invalid_function)() = (void*)1; -int main(int argc, char *argv[]) +int main(int argc UNUSED, char *argv[] UNUSED) { struct sigaction sa; memset(&sa, 0, sizeof(sa));