From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18491 invoked by alias); 18 Jun 2013 19:50:03 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 18467 invoked by uid 306); 18 Jun 2013 19:50:03 -0000 Date: Tue, 18 Jun 2013 19:50:00 -0000 Message-ID: <20130618195002.18256.qmail@sourceware.org> From: tromey@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] tromey/cleanup-checker: fix solib-som.c X-Git-Refname: refs/heads/tromey/cleanup-checker X-Git-Reftype: branch X-Git-Oldrev: 1163d87cec2348c2acb6ad06415ef0e61f4f4aa5 X-Git-Newrev: 3b95de7aa5f3ce4fed6ff51cfe10f37a846a2735 X-SW-Source: 2013-q2/txt/msg00096.txt.bz2 List-Id: The branch, tromey/cleanup-checker has been updated discards 1163d87cec2348c2acb6ad06415ef0e61f4f4aa5 (commit) discards b6e163b3a938bce45068e9f2a10e426cda839e98 (commit) discards edbf6e3319e07b5e43f51269f2a11b22cbc65dd5 (commit) discards 28b40ea4c398d6e7095baf1fc4f1beeff6045997 (commit) discards 376481e607beb50e4f0593640f708d07f4cb4195 (commit) discards 9f722af56bccd9c856cbd2dfc4408348c395d240 (commit) discards 33976bedbdfbfc144da375e84c2f7cfcd5abb4b8 (commit) via 3b95de7aa5f3ce4fed6ff51cfe10f37a846a2735 (commit) via a78d9a13ce5a67dd25f20390fbac0d9f4364c5a4 (commit) via e1bd3410297e41b02d0bafe9f0b0673fb81a4d2c (commit) via ce180076d883ae5be9e98f77f425e1020c2cfde0 (commit) via 677df169ed2e669a51ae9c6c1db04a39d80edeb7 (commit) via 2c2dada6f8d8d53eda2dbcdf962d85f4cf230542 (commit) via 58947b5ffb357941545387660fe6c119e9e385ee (commit) via de1e5bbb865c27c372bc49912777506376517a9a (commit) via 7a106f17dfd78345ebdc1714e4e7cdaff73727bc (commit) via a207d4e3c3716aeaf48378f45328947be732d564 (commit) via ba705a97e0f9e9c24244f50d5ed414cc60ac556f (commit) via b22d1dba9dbe0edf7d54008fe4196201fe5af9a6 (commit) via 63d56af11e57587bda22e30f63f74ebd11c39d3e (commit) via d33aa35b7856edaa056abdb54e4304472387c701 (commit) via b45c51e012c1d3d5bcda8caffba46406ac60eeea (commit) via 4a9fa32bf9948b2077984c896d034da24a057b3f (commit) via 10b69d8264d23e4f2133a73f880655f06a3f604c (commit) via aba6da4e2b62f0caec9f9d6d1adf47c4c8401466 (commit) via 3a65a4a6d28d3875f6047b050f78f5ed4157a120 (commit) via 33dee249503847b3d86d9edc06fa34477c915ae4 (commit) via e10a24172d88254e16af4304a5603556608ffca2 (commit) via 7272111c87bfd55917e34172115ca9bdfcaa726e (commit) via df9378ffadb503231fff2c0c7cf1755ba8b2960b (commit) via 4ba8483c26cc449fa115cd490c71ccbff7039190 (commit) via ace916f43edbf3d31c3b2ed78fa6e0f81fba705d (commit) via 99d1a5c0fa76b3981690bbda26d7faae284e190a (commit) via e238081bb7e50055e2b7c0b0d1b697e47fe2d877 (commit) via 5625f90ce53854b1c62f49229577e4dbdf323947 (commit) via 21206e81f8efc486383f971b37fdc6b3bdddeb5c (commit) via 05bf60502998d3e6793eeea259a84528e3dca307 (commit) via e70a152e6e28a5bbe792614d746f1182512e1d91 (commit) via 01e3f656d2961975c298fd1e626e0acf83976911 (commit) via 9799ab54486adf49a50e5aadd9f5e6bc03db6123 (commit) via 9230078ad017a32d7f2f4b7107a65a34554ae9c8 (commit) via 498756d858f199c2f7122e7df1bd3b802410eb63 (commit) via 334ab20292c3bbbc963c0429d223880d790aa67f (commit) via 50806d380850c864f1eccee76b825215ac1555a9 (commit) via 19588b66da2fa4f71096a96e755b6824a871bb81 (commit) via 08410765129c3c84996505f538993bebf1bb973a (commit) via cacca56f51809f9fc1d6366dbe4406fd94d5f9be (commit) via 142a4c245ed9a79ce295588c85fbc63739b7971b (commit) via e05713dd030d5dbad35b7a4f2fce547641e737e7 (commit) via 901efc30a8dbf43d75c3fe237698fa3966849a01 (commit) via 00d6602ca21bef18541121216d3fd6e8e57e05e0 (commit) via b54c583c9dc7f0c8ae0d2da56f3fb93a71e51d29 (commit) via 55806c25eac813da365236c2996613e6aeb341f6 (commit) via 1e1754a3d30c05ef7e179dba583057083eebf926 (commit) via 6776fcaed605fcc6835dc1d7add224bda852fb78 (commit) via 3a433e6f35874b7ba61ed048365ca6a9dd71fe42 (commit) via 75932b72d870d8b1d48b14dceb53abc966469ce8 (commit) via debeeac623885b04c2a30a5e6212e599023c7c3f (commit) via 46773a75ce73ca35bd36fcc9b2292eb24875d836 (commit) via d303935e79b890e16fdd6acbbb1325b524243d88 (commit) via 46b39981ce282ac72d2536427d085f9a83c2a892 (commit) via 7ab0f9e460b59d1bd6df158ef14243922759cf9f (commit) via 1b87443249230bdb8fa8bf50f441f387721eeb23 (commit) via 926e3028346f3b536b95f904040a2d696ac60e60 (commit) via 984815e83ea7218e9b297810e8ff541ae81a608f (commit) via b8b4f20298ffb194091ab024904094111123897b (commit) via a8036ca23145ace743ec0f98db2663c56f9dec7c (commit) via 7dfbc23277be786c5d40f4ca28b7847774216238 (commit) via 6c15b536607c0297f9696ca96410b88c7c5e4ec0 (commit) via 865c724068a13540c75f0e5b0024a19b35a12c14 (commit) via 8306f4153ae79a0c8bf3acd3a07076c3c3aceee1 (commit) via e0dd06f0a384338523320a769d5bec6b93335235 (commit) via 45895d8453d380eca6acce2bf23ebb363f391e93 (commit) via 42b6105c2ab06d684595414c4fb6ac2b2056019f (commit) via 412f6d9c3dd9bf3049d1b78aefdc7391f95b5484 (commit) via 7c56eaa2a0e8d0026b30db4bb7ed5dac7714c780 (commit) via 8bf0fc50a745b6a5c727dff87cb38d2f6c922940 (commit) via 5ba9957aac5fc02b7c774aad69d9582fa5d413ff (commit) via f34c4136fdbb75c35ce3144e810b2633a737dd48 (commit) via 9c543ebf2eeb2698cb4128f7f9e1e2716790121d (commit) via e3d3ffe8e2191706b4adb8063acfefdb1a53308f (commit) via dae5167feb0a7f441503b56a30e3a44166d21459 (commit) via 1c84a012eae901086a22b0fb01b4b4e142c584c3 (commit) via e11f0c0337e63b9170900b452ca0990f804d729c (commit) via 4d54e920dcdfbb93fca782d1989aae539cd50e04 (commit) via de07f81d1d66a6e16b60b53f1cb0b9126dc6d50b (commit) via a6808c0c8f122f5940c0556f4a23b4faf85f952c (commit) via 312d69cced726700c40eb8affd224ffa0f6e141b (commit) via dca4d6be9dbb46d002e992fc1f8062f737f3f5b7 (commit) via 377d4926e91e18e2446f8be7a10ffaa254f6b3ae (commit) via 0fe49c97e446b21adc088124181c755dddaa6b3e (commit) via 7bb9e3e26deb8909c037aa47db2d9129e0cd52cf (commit) via ca16a04e13325f079cb3476eb3e440697b7f7d60 (commit) via 794c9c4e8483eac3c400772745e4eea3ce894003 (commit) via f293a7e173e2c220c53bffdd7dfa51625c351975 (commit) via 4fd8c02c8ffb336200f473cad9ff04d5c9662434 (commit) via b8018373ee89d06385f09c614046a8530056c85d (commit) via a304d267aecbf5c1100035758bf4aa8135fb8a0d (commit) via 1fcafc429220f73ba0e2414832f04e935c8b8271 (commit) via 1c294e16013896a46fafda4e0d89a474641e3bb5 (commit) via bb052acd2ff9c1f5e572f89ca2dbd3fc3e1ddecb (commit) via b027995f2d8173e26eb63d5c2386defa59419f78 (commit) via a1130b7b0f496ab69e8565e69b84388091451f5d (commit) via 4233e4d779ba9fd15fab617ec378488e7961b1b4 (commit) via 740d732d28e4d38031d8b7a29b3a18c769bc7182 (commit) via 41a566af394703a0b789ecb07e11e37e7cb66e6b (commit) via 9af2e33ee9c2b585453e72ff7e30eda8c5a7283c (commit) via 82317bfa2ccb9dd741e508815eb77e181b1dae45 (commit) via 38e484893aac45e294bc8e3fa443c430ed553539 (commit) via f031ed530e4f9bf7c04ed3d13eba6fc9b919fa8f (commit) via ab7d05421c9ee2b50a6c191a1c23c262b288bdcf (commit) via 7c0c349462ed043999c2ff07e9e3bdad4b9b7940 (commit) via e94a795930db456392604e213ab29a959255d28d (commit) via 63b55747e23f5950422d3a10350e3a0869e1b8a3 (commit) via 736d95d04891f566adf9cc5363b964e82610a855 (commit) via be33098462e01e61d6c9df8e3ad701763c8b0217 (commit) via 1f6268b42e3698c70d6d6c1402f59a800b410c92 (commit) via a22c0ea0e9b3f4c44d781b12215b35a482951170 (commit) via 1831b542dc3b53aa442cd02af1219a24dca0f9a6 (commit) via 4d5659573cb61ae9196d95ef3eba14cf0b9fd685 (commit) via c527d3ccdbfcfe1570f45293e13d2a538e66dc21 (commit) via b1c4bf43f28eaeb557ef691faf6a2783c981c8dc (commit) via cb449309cafb9f8cdc0246c0b1158b1b76254dbc (commit) via 4a1b49ebff71d76ea500fac82540f13bf9067c1d (commit) via 5f3ca9b0398abbe61e460800a0fc2e6463ee59af (commit) via 0a1e6a1891814a2fa65b72a265d2cd52edb3e296 (commit) via 87c4ecaa180e412ecc937c8b557ca903c3430877 (commit) via f32f285fa9f4d8ba2584573af3141e9d67b44b04 (commit) via 77295e379f6e8cad6b54c6ad19a03448fd802e33 (commit) via 8b26d772baef73317f2c92931f991a9afd115652 (commit) via cf5c1b327ec68f1a7e8115296d0aa4162340981a (commit) via 6dd130dcda5fe19dcc00e86ce61f001d43437016 (commit) via 11a307da49aba205e4e478c8265e149763730189 (commit) via 4d4f46ce89bfcd710420e953a49dfb7e59ce7b4f (commit) via 1eac09fbb5a0298d689e9a2948fd456aee72da69 (commit) from 1163d87cec2348c2acb6ad06415ef0e61f4f4aa5 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 3b95de7aa5f3ce4fed6ff51cfe10f37a846a2735 Author: Tom Tromey Date: Fri May 17 09:40:41 2013 -0600 fix solib-som.c som_open_symbol_file_object was leaking a cleanup. * solib-som.c (som_open_symbol_file_object): Call do_cleanups. commit a78d9a13ce5a67dd25f20390fbac0d9f4364c5a4 Author: Tom Tromey Date: Thu May 16 14:43:34 2013 -0600 fix init_cutu_and_read_dies init_cutu_and_read_dies creates an outer cleanup and uses its immediately nested inner cleanup conditionally. This seems overly complicated to me; simpler is to just deal with the outer cleanup and drop the inner one. That is what this patch implements. * dwarf2read.c (init_cutu_and_read_dies): Remove 'free_cu_cleanup'. Simplify cleanup handling. commit e1bd3410297e41b02d0bafe9f0b0673fb81a4d2c Author: Tom Tromey Date: Thu May 16 14:42:15 2013 -0600 fix dwarf_decode_line_header dwarf_decode_line_header has one return that is missing a call to do_cleanups. This patch adds it. This was found using the cleanup checker. * dwarf2read.c (dwarf_decode_line_header): Call do_cleanups on all return paths. commit ce180076d883ae5be9e98f77f425e1020c2cfde0 Author: Tom Tromey Date: Thu May 30 13:41:30 2013 -0600 change scoped cleanups to stack cleanups This adds a generic feature to allow cleanups to be allocated on the stack. A convenience macro is provided which uses alloca; so this should not be used in loops. This also converts linespec.c to use the new code. commit 677df169ed2e669a51ae9c6c1db04a39d80edeb7 Author: Tom Tromey Date: Thu May 9 11:44:45 2013 -0600 introduce scoped cleanups This adds scoped cleanups to gdb. A scoped cleanup is a more efficient, and checkable, alternative to the common idiom: cleanup = make_cleanup (null_cleanup, NULL); ... do_cleanups (cleanup); ... where the cleanup is always run when exiting the scope. The efficiency comes from stack allocating the scoped cleanup. This is probably minor. However, I've noticed myself sometimes avoiding null cleanups on this basis, and it is nice to erase that bias. The checking comes from using a GCC extension when available. This check ensures that the scoped cleanup was either run or discarded when the scope exits. commit 2c2dada6f8d8d53eda2dbcdf962d85f4cf230542 Author: Tom Tromey Date: Tue May 7 11:34:59 2013 -0600 introduce dangling_cleanup attribute and change source to use it Some functions leak cleanups on purpose. However, these functions aren't "constructors" in the cleanup-checker sense, as they do not return the cleanup. This patch adds an attribute that can be used to mark these functions. This avoids a bunch of false reports from the checker. This patch is really a huge hack. It is basically giving up on cleanly checking the use of cleanups. You can see this most easily by noticing that I elected not to have this property propagate through the call chain. Still, I figured I'd see what people thought of this patch. Without it the checker is harder to use, as you must know which functions are ignorable. Maybe some of these are fixable with a bit more thought. * breakpoint.c (breakpoint_re_set_default): Use DANGLING_CLEANUP. * c-exp.y (operator_stoken): Use DANGLING_CLEANUP. * coffread.c (coff_locate_sections): Use DANGLING_CLEANUP. * contrib/cleanup_check.py (leaks_cleanup): New global. (note_dangling_cleanup, leaves_dangling_cleanup): New functions. (CleanupChecker.compute_master): Add comment. Check leaves_dangling_cleanup. (CleanupChecker.check_cleanups): Don't mention special constructors to the user. (register_attributes): New function. Register it with gcc. * defs.h (DANGLING_CLEANUP): New define. * dwarf2read.c (read_cutu_die_from_dwo, handle_DW_AT_stmt_list) (setup_type_unit_groups, dwarf2_add_field, dwarf2_add_typedef) (dwarf2_add_member_fn, psymtab_include_file_name) (dwarf_decode_lines): Use DANGLING_CLEANUP. * linux-nat.c (linux_child_pid_to_exec_file): Use DANGLING_CLEANUP. * linux-tdep.c (linux_make_corefile_notes): Use DANGLING_CLEANUP. * python/py-prettyprint.c (push_dummy_python_frame): Use DANGLING_CLEANUP. * stabsread.c (read_member_functions, read_struct_fields) (read_baseclasses): Use DANGLING_CLEANUP. * utils.h (gdb_bfd_errmsg): Use DANGLING_CLEANUP. * tracepoint.c (trace_dump_actions): Use DANGLING_CLEANUP. commit 58947b5ffb357941545387660fe6c119e9e385ee Author: Tom Tromey Date: Mon Mar 4 11:20:36 2013 -0700 add README.archer commit de1e5bbb865c27c372bc49912777506376517a9a Author: Tom Tromey Date: Tue Jun 18 18:11:19 2013 +0000 Fix PR symtab/15391 PR symtab/15391 is a failure with the DW_OP_GNU_implicit_pointer feature. I tracked it down to a logic error in read_pieced_value. The code truncates this_size_bits according to the type size and offset too early -- it should do it after taking bits_to_skip into account. This patch fixes the bug. While testing this, I also tripped across a latent bug because indirect_pieced_value does not sign-extend where needed. This patch fixes this bug as well. Finally, Pedro pointed out that a previous version implemented sign extension incorrectly. This version introduces a new gdb_sign_extend function for this. A couple of notes on this function: * It has the gdb_ prefix to avoid clashes with various libraries that felt free to avoid proper namespacing. There is a "sign_extend" function in a Tile GX header, in an SOM-related BFD header (and in sh64-tdep.c and as a macro in arm-wince-tdep.c, but those are ours...) * I looked at all the sign extensions in gdb and didn't see ones that I felt comfortable converting to use this function; in large part because I don't have a good way to test the conversion. Built and regtested on x86-64 Fedora 18. New test cases included; this required a minor addition to the DWARF assembler. Note that the DWARF CU made by implptrpiece.exp uses a funny pointer size in order to show the sign-extension bug on all platforms. * dwarf2loc.c (read_pieced_value): Truncate this_size_bits after taking bits_to_skip into account. Sign extend byte_offset. * utils.h (gdb_sign_extend): Declare. * utils.c (gdb_sign_extend): New function. * gdb.dwarf2/implptrpiece.exp: New file. * gdb.dwarf2/implptrconst.exp (d): New variable. Print d. * lib/dwarf2.exp (Dwarf::_location): Handle DW_OP_piece. ----------------------------------------------------------------------- Summary of changes: ChangeLog | 5 + bfd/ChangeLog | 87 ++ bfd/bfd-in2.h | 1 + bfd/configure | 4 +- bfd/configure.in | 4 +- bfd/elf32-arm.c | 9 +- bfd/elf32-mips.c | 22 + bfd/elf32-rl78.c | 35 +- bfd/elf64-aarch64.c | 663 ++++++++- bfd/elf64-mips.c | 23 + bfd/elfn32-mips.c | 23 + bfd/libbfd.h | 1 + bfd/reloc.c | 2 + bfd/syms.c | 10 +- bfd/version.h | 2 +- gdb/.gitignore | 1 + gdb/ChangeLog | 284 ++++ gdb/ChangeLog-2009 | 2 +- gdb/ChangeLog-2011 | 2 +- gdb/MAINTAINERS | 1 + gdb/NEWS | 8 + gdb/breakpoint.c | 15 - gdb/breakpoint.h | 2 - gdb/corelow.c | 4 +- gdb/cp-namespace.c | 34 +- gdb/ctf.c | 2 + gdb/darwin-nat.c | 3 +- gdb/darwin-nat.h | 3 +- gdb/doc/ChangeLog | 19 + gdb/doc/gdb.texinfo | 50 +- gdb/dwarf2loc.c | 15 +- gdb/dwarf2read.c | 108 +- gdb/gdbserver/ChangeLog | 400 ++++++ gdb/gdbserver/Makefile.in | 7 +- gdb/gdbserver/ax.c | 2 +- gdb/gdbserver/i387-fp.c | 34 +- gdb/gdbserver/i387-fp.h | 2 - gdb/gdbserver/inferiors.c | 1 - gdb/gdbserver/linux-aarch64-low.c | 43 +- gdb/gdbserver/linux-amd64-ipa.c | 6 +- gdb/gdbserver/linux-arm-low.c | 91 +- gdb/gdbserver/linux-bfin-low.c | 38 +- gdb/gdbserver/linux-cris-low.c | 37 +- gdb/gdbserver/linux-crisv32-low.c | 52 +- gdb/gdbserver/linux-i386-ipa.c | 2 + gdb/gdbserver/linux-ia64-low.c | 44 +- gdb/gdbserver/linux-low.c | 405 ++++--- gdb/gdbserver/linux-low.h | 74 +- gdb/gdbserver/linux-m32r-low.c | 37 +- gdb/gdbserver/linux-m68k-low.c | 50 +- gdb/gdbserver/linux-mips-low.c | 193 ++- gdb/gdbserver/linux-nios2-low.c | 43 +- gdb/gdbserver/linux-ppc-low.c | 181 ++- gdb/gdbserver/linux-s390-low.c | 195 ++- gdb/gdbserver/linux-sh-low.c | 49 +- gdb/gdbserver/linux-sparc-low.c | 60 +- gdb/gdbserver/linux-tic6x-low.c | 73 +- gdb/gdbserver/linux-tile-low.c | 48 +- gdb/gdbserver/linux-x86-low.c | 479 ++++--- gdb/gdbserver/linux-xtensa-low.c | 61 +- gdb/gdbserver/lynx-i386-low.c | 2 + gdb/gdbserver/lynx-low.c | 3 + gdb/gdbserver/lynx-low.h | 4 + gdb/gdbserver/lynx-ppc-low.c | 2 + gdb/gdbserver/nto-low.c | 6 +- gdb/gdbserver/nto-low.h | 6 + gdb/gdbserver/nto-x86-low.c | 2 + gdb/gdbserver/proc-service.c | 10 +- gdb/gdbserver/regcache.c | 242 ++-- gdb/gdbserver/regcache.h | 33 +- gdb/gdbserver/remote-utils.c | 9 +- gdb/gdbserver/server.c | 31 +- gdb/gdbserver/server.h | 6 + gdb/gdbserver/spu-low.c | 10 +- gdb/gdbserver/tdesc.c | 66 + gdb/gdbserver/tdesc.h | 64 + gdb/gdbserver/tracepoint.c | 35 +- gdb/gdbserver/win32-arm-low.c | 11 +- gdb/gdbserver/win32-i386-low.c | 8 +- gdb/gdbserver/win32-low.c | 10 +- gdb/gdbserver/win32-low.h | 6 + gdb/gnu-nat.c | 3 +- gdb/gnu-v3-abi.c | 12 +- gdb/infrun.c | 12 +- gdb/machoread.c | 7 +- gdb/mi/mi-cmd-stack.c | 25 +- gdb/mi/mi-cmd-var.c | 29 +- gdb/mi/mi-cmds.h | 4 - gdb/mi/mi-main.c | 27 +- gdb/mi/mi-parse.c | 22 + gdb/mi/mi-parse.h | 4 + gdb/objfiles.c | 57 +- gdb/objfiles.h | 16 + gdb/ppc-linux-tdep.c | 4 +- gdb/ppc-tdep.h | 4 +- gdb/ppc64-tdep.c | 142 ++- gdb/printcmd.c | 11 + gdb/probe.c | 45 +- gdb/probe.h | 10 + gdb/python/py-utils.c | 3 +- gdb/regformats/regdat.sh | 30 +- gdb/remote.c | 34 +- gdb/rs6000-tdep.c | 35 +- gdb/solib-svr4.c | 688 +++++++++- gdb/solib.c | 34 +- gdb/solib.h | 8 + gdb/solist.h | 13 + gdb/stack.c | 22 +- gdb/target.c | 4 + gdb/target.h | 7 + gdb/testsuite/ChangeLog | 300 ++++ gdb/testsuite/boards/native-extended-gdbserver.exp | 2 +- gdb/testsuite/config/arm-ice.exp | 2 +- gdb/testsuite/config/bfin.exp | 2 +- gdb/testsuite/config/cygmon.exp | 2 +- gdb/testsuite/config/h8300.exp | 2 +- gdb/testsuite/config/monitor.exp | 94 +- gdb/testsuite/config/sid.exp | 14 +- gdb/testsuite/config/sim.exp | 2 +- gdb/testsuite/config/slite.exp | 52 +- gdb/testsuite/config/vx.exp | 8 +- gdb/testsuite/gdb.ada/info_types.c | 3 +- gdb/testsuite/gdb.arch/i386-bp_permanent.exp | 10 +- gdb/testsuite/gdb.asm/asm-source.exp | 2 +- gdb/testsuite/gdb.base/args.exp | 2 +- gdb/testsuite/gdb.base/attach-pie-misread.exp | 2 +- gdb/testsuite/gdb.base/auxv.exp | 2 +- gdb/testsuite/gdb.base/bigcore.exp | 2 +- gdb/testsuite/gdb.base/bitfields.exp | 38 +- gdb/testsuite/gdb.base/bitfields2.exp | 20 +- gdb/testsuite/gdb.base/break-always.exp | 3 +- gdb/testsuite/gdb.base/break-interp.exp | 33 +- .../gdb.base/break-on-linker-gcd-function.cc | 3 +- .../solib-lib.c => gdb.base/break-probes-solib.c} | 11 +- .../using-crash.cc => gdb.base/break-probes.c} | 35 +- gdb/testsuite/gdb.base/break-probes.exp | 78 + gdb/testsuite/gdb.base/break.exp | 6 +- gdb/testsuite/gdb.base/call-sc.exp | 2 +- gdb/testsuite/gdb.base/callfuncs.exp | 6 +- gdb/testsuite/gdb.base/commands.exp | 14 +- gdb/testsuite/gdb.base/corefile.exp | 10 +- gdb/testsuite/gdb.base/dbx.exp | 2 +- gdb/testsuite/gdb.base/dump.exp | 9 +- gdb/testsuite/gdb.base/ending-run.exp | 2 +- gdb/testsuite/gdb.base/exprs.exp | 10 +- gdb/testsuite/gdb.base/float.c | 3 +- gdb/testsuite/gdb.base/funcargs.exp | 96 +- gdb/testsuite/gdb.base/hbreak2.exp | 2 +- gdb/testsuite/gdb.base/huge.exp | 2 +- gdb/testsuite/gdb.base/inferior-died.c | 3 +- .../solib-main.c => gdb.base/info-shared-solib1.c} | 13 +- .../solib-main.c => gdb.base/info-shared-solib2.c} | 13 +- .../using-crash.cc => gdb.base/info-shared.c} | 55 +- gdb/testsuite/gdb.base/info-shared.exp | 146 ++ gdb/testsuite/gdb.base/interp.c | 3 +- gdb/testsuite/gdb.base/jit-main.c | 3 +- gdb/testsuite/gdb.base/jit-solib.c | 3 +- gdb/testsuite/gdb.base/list.exp | 16 +- gdb/testsuite/gdb.base/long_long.c | 3 +- gdb/testsuite/gdb.base/long_long.exp | 2 +- gdb/testsuite/gdb.base/longjmp.c | 3 +- gdb/testsuite/gdb.base/memattr.exp | 2 +- gdb/testsuite/gdb.base/nextoverexit.c | 3 +- gdb/testsuite/gdb.base/overlays.exp | 8 +- gdb/testsuite/gdb.base/pr11022.c | 3 +- gdb/testsuite/gdb.base/prelink-lib.c | 3 +- gdb/testsuite/gdb.base/prelink.c | 3 +- gdb/testsuite/gdb.base/printcmds.exp | 34 +- gdb/testsuite/gdb.base/prologue.c | 3 +- gdb/testsuite/gdb.base/recurse.exp | 12 +- gdb/testsuite/gdb.base/remotetimeout.exp | 2 +- gdb/testsuite/gdb.base/reread.exp | 30 +- gdb/testsuite/gdb.base/restore.c | 3 +- gdb/testsuite/gdb.base/savedregs.exp | 2 +- gdb/testsuite/gdb.base/scope.exp | 102 +- gdb/testsuite/gdb.base/sepdebug.exp | 6 +- gdb/testsuite/gdb.base/setshow.exp | 2 +- gdb/testsuite/gdb.base/setvar.exp | 22 +- gdb/testsuite/gdb.base/sigaltstack.exp | 2 +- gdb/testsuite/gdb.base/sigchld.c | 3 +- gdb/testsuite/gdb.base/siginfo-addr.exp | 2 +- gdb/testsuite/gdb.base/siginfo-obj.exp | 4 +- gdb/testsuite/gdb.base/siginfo.exp | 2 +- gdb/testsuite/gdb.base/sigrepeat.exp | 2 +- gdb/testsuite/gdb.base/sigstep.exp | 2 +- gdb/testsuite/gdb.base/solib-corrupted.exp | 27 + gdb/testsuite/gdb.base/solib-search-lib1.c | 3 +- gdb/testsuite/gdb.base/solib-search-lib2.c | 3 +- gdb/testsuite/gdb.base/solib-search.c | 3 +- gdb/testsuite/gdb.base/solib-search.h | 3 +- gdb/testsuite/gdb.base/structs.exp | 2 +- gdb/testsuite/gdb.base/testenv.exp | 4 +- gdb/testsuite/gdb.base/twice.exp | 6 +- gdb/testsuite/gdb.base/valgrind-db-attach.exp | 2 +- gdb/testsuite/gdb.base/valgrind-infcall.exp | 2 +- gdb/testsuite/gdb.base/varargs.exp | 2 +- gdb/testsuite/gdb.base/watchpoint.exp | 6 +- gdb/testsuite/gdb.base/whatis.c | 3 +- gdb/testsuite/gdb.cp/abstract-origin.cc | 3 +- gdb/testsuite/gdb.cp/annota2.exp | 2 +- gdb/testsuite/gdb.cp/anon-struct.cc | 3 +- gdb/testsuite/gdb.cp/anon-struct.exp | 25 +- gdb/testsuite/gdb.cp/baseenum.cc | 3 +- gdb/testsuite/gdb.cp/bs15503.cc | 3 +- gdb/testsuite/gdb.cp/call-c-1.c | 3 +- gdb/testsuite/gdb.cp/call-c.cc | 3 +- gdb/testsuite/gdb.cp/class2.cc | 3 +- gdb/testsuite/gdb.cp/classes.cc | 3 +- gdb/testsuite/gdb.cp/cttiadd.cc | 3 +- gdb/testsuite/gdb.cp/cttiadd1.cc | 3 +- gdb/testsuite/gdb.cp/cttiadd2.cc | 3 +- gdb/testsuite/gdb.cp/cttiadd3.cc | 3 +- gdb/testsuite/gdb.cp/derivation.cc | 9 +- gdb/testsuite/gdb.cp/derivation.exp | 34 +- .../gdb.cp/{anon-struct.cc => derivation2.cc} | 60 +- gdb/testsuite/gdb.cp/dispcxx.cc | 3 +- gdb/testsuite/gdb.cp/exception.cc | 5 +- gdb/testsuite/gdb.cp/gdb1355.exp | 2 +- gdb/testsuite/gdb.cp/gdb2384-base.cc | 3 +- gdb/testsuite/gdb.cp/gdb2384-base.h | 3 +- gdb/testsuite/gdb.cp/gdb2384.cc | 3 +- gdb/testsuite/gdb.cp/gdb2495.cc | 3 +- gdb/testsuite/gdb.cp/m-static.exp | 75 +- gdb/testsuite/gdb.cp/mb-inline.h | 3 +- gdb/testsuite/gdb.cp/mb-inline1.cc | 3 +- gdb/testsuite/gdb.cp/mb-inline2.cc | 3 +- gdb/testsuite/gdb.cp/member-name.cc | 3 +- gdb/testsuite/gdb.cp/member-ptr.cc | 5 +- gdb/testsuite/gdb.cp/misc.cc | 3 +- gdb/testsuite/gdb.cp/misc.exp | 10 +- gdb/testsuite/gdb.cp/namespace1.cc | 5 +- gdb/testsuite/gdb.cp/nextoverthrow.cc | 4 +- gdb/testsuite/gdb.cp/pr-574.cc | 3 +- gdb/testsuite/gdb.cp/pr9631.cc | 3 +- gdb/testsuite/gdb.cp/printmethod.cc | 3 +- gdb/testsuite/gdb.cp/psmang1.cc | 3 +- gdb/testsuite/gdb.cp/psmang2.cc | 3 +- gdb/testsuite/gdb.cp/psymtab-parameter.cc | 3 +- gdb/testsuite/gdb.cp/ptype-flags.cc | 3 +- gdb/testsuite/gdb.cp/ref-params.cc | 3 +- gdb/testsuite/gdb.cp/ref-types.cc | 3 +- gdb/testsuite/gdb.cp/smartp.cc | 3 +- gdb/testsuite/gdb.cp/try_catch.cc | 3 +- gdb/testsuite/gdb.cp/userdef.cc | 3 +- gdb/testsuite/gdb.cp/using-crash.cc | 3 +- gdb/testsuite/gdb.cp/virtfunc.cc | 3 +- gdb/testsuite/gdb.cp/virtfunc.exp | 2 +- gdb/testsuite/gdb.cp/virtfunc2.cc | 3 +- gdb/testsuite/gdb.disasm/hppa.exp | 2 +- gdb/testsuite/gdb.disasm/t01_mov.exp | 4 +- gdb/testsuite/gdb.disasm/t02_mova.exp | 4 +- gdb/testsuite/gdb.disasm/t03_add.exp | 4 +- gdb/testsuite/gdb.disasm/t04_sub.exp | 4 +- gdb/testsuite/gdb.disasm/t05_cmp.exp | 4 +- gdb/testsuite/gdb.disasm/t06_ari2.exp | 4 +- gdb/testsuite/gdb.disasm/t07_ari3.exp | 4 +- gdb/testsuite/gdb.disasm/t08_or.exp | 4 +- gdb/testsuite/gdb.disasm/t09_xor.exp | 4 +- gdb/testsuite/gdb.disasm/t10_and.exp | 4 +- gdb/testsuite/gdb.disasm/t11_logs.exp | 4 +- gdb/testsuite/gdb.disasm/t12_bit.exp | 4 +- gdb/testsuite/gdb.disasm/t13_otr.exp | 4 +- gdb/testsuite/gdb.dwarf2/callframecfa.S | 3 +- gdb/testsuite/gdb.dwarf2/dw2-ranges.c | 3 +- gdb/testsuite/gdb.dwarf2/dw2-ranges2.c | 3 +- gdb/testsuite/gdb.dwarf2/dw2-ranges3.c | 3 +- gdb/testsuite/gdb.dwarf2/dw2-restore.S | 3 +- gdb/testsuite/gdb.dwarf2/implptrconst.exp | 9 + .../{implptrconst.exp => implptrpiece.exp} | 88 +- gdb/testsuite/gdb.dwarf2/pieces.S | 3 +- gdb/testsuite/gdb.dwarf2/valop.S | 3 +- gdb/testsuite/gdb.gdb/complaints.exp | 5 - gdb/testsuite/gdb.gdb/observer.exp | 5 - gdb/testsuite/gdb.gdb/selftest.exp | 6 +- gdb/testsuite/gdb.gdb/xfullpath.exp | 5 - gdb/testsuite/gdb.hp/gdb.base-hp/callfwmall.exp | 8 +- gdb/testsuite/gdb.java/jnpe.java | 3 +- gdb/testsuite/gdb.mi/mi-reverse.exp | 2 +- gdb/testsuite/gdb.mi/mi-stepn.c | 3 +- gdb/testsuite/gdb.mi/mi-var-cp.cc | 3 +- gdb/testsuite/gdb.mi/mi-var-rtti.cc | 3 +- gdb/testsuite/gdb.mi/ns-stale-regcache.c | 3 +- gdb/testsuite/gdb.mi/pr11022.c | 3 +- gdb/testsuite/gdb.mi/solib-lib.c | 3 +- gdb/testsuite/gdb.mi/solib-main.c | 3 +- gdb/testsuite/gdb.pascal/floats.exp | 4 +- gdb/testsuite/gdb.python/py-arch.c | 3 +- gdb/testsuite/gdb.python/py-block.c | 5 +- gdb/testsuite/gdb.python/py-breakpoint.c | 4 +- gdb/testsuite/gdb.python/py-events.c | 3 +- gdb/testsuite/gdb.python/py-evthreads.c | 3 +- gdb/testsuite/gdb.python/py-explore.c | 3 +- gdb/testsuite/gdb.python/py-explore.cc | 3 +- gdb/testsuite/gdb.python/py-finish-breakpoint.c | 3 +- gdb/testsuite/gdb.python/py-finish-breakpoint2.cc | 4 +- gdb/testsuite/gdb.python/py-inferior.exp | 2 +- gdb/testsuite/gdb.python/py-symbol.c | 3 +- gdb/testsuite/gdb.threads/attach-into-signal.exp | 6 +- .../dlopen-libpthread-lib.c} | 28 +- .../dlopen-libpthread.c} | 30 +- gdb/testsuite/gdb.threads/dlopen-libpthread.exp | 74 + gdb/testsuite/gdb.threads/execl.c | 3 +- gdb/testsuite/gdb.threads/execl1.c | 3 +- gdb/testsuite/gdb.threads/pthreads.exp | 2 +- gdb/testsuite/gdb.threads/thread_events.exp | 6 +- gdb/testsuite/gdb.threads/watchthreads.exp | 2 +- gdb/testsuite/gdb.trace/actions-changed.exp | 2 +- gdb/testsuite/gdb.trace/actions.exp | 14 +- gdb/testsuite/gdb.trace/ax.exp | 2 +- gdb/testsuite/gdb.trace/backtrace.exp | 8 +- gdb/testsuite/gdb.trace/change-loc.exp | 2 +- gdb/testsuite/gdb.trace/deltrace.exp | 22 +- gdb/testsuite/gdb.trace/disconnected-tracing.exp | 2 +- gdb/testsuite/gdb.trace/ftrace.exp | 2 +- gdb/testsuite/gdb.trace/infotrace.exp | 8 +- gdb/testsuite/gdb.trace/mi-trace-unavailable.exp | 134 ++ gdb/testsuite/gdb.trace/passc-dyn.exp | 8 +- gdb/testsuite/gdb.trace/passcount.exp | 14 +- gdb/testsuite/gdb.trace/pending.exp | 2 +- gdb/testsuite/gdb.trace/qtro.exp | 2 +- gdb/testsuite/gdb.trace/range-stepping.exp | 2 +- gdb/testsuite/gdb.trace/report.exp | 8 +- gdb/testsuite/gdb.trace/save-trace.exp | 38 +- gdb/testsuite/gdb.trace/status-stop.exp | 4 +- gdb/testsuite/gdb.trace/strace.exp | 2 +- gdb/testsuite/gdb.trace/tfile.exp | 2 +- gdb/testsuite/gdb.trace/tfind.exp | 58 +- gdb/testsuite/gdb.trace/trace-break.exp | 2 +- gdb/testsuite/gdb.trace/trace-mt.exp | 2 +- .../trace-unavailable.c} | 32 +- gdb/testsuite/gdb.trace/tracecmd.exp | 8 +- gdb/testsuite/gdb.trace/tspeed.exp | 4 +- gdb/testsuite/gdb.trace/tsv.exp | 6 +- gdb/testsuite/gdb.trace/while-stepping.exp | 6 +- gdb/testsuite/lib/dwarf.exp | 7 +- gdb/testsuite/lib/gdb.exp | 301 ++-- gdb/testsuite/lib/gdbserver-support.exp | 2 +- gdb/testsuite/lib/java.exp | 24 +- gdb/testsuite/lib/mi-support.exp | 112 +- gdb/testsuite/lib/pascal.exp | 4 +- gdb/testsuite/lib/prelink-support.exp | 26 +- gdb/testsuite/lib/prompt.exp | 10 +- gdb/testsuite/lib/selftest-support.exp | 5 + gdb/testsuite/lib/trace-support.exp | 92 +- gdb/tracepoint.c | 97 +- gdb/tracepoint.h | 1 + gdb/utils.c | 17 + gdb/utils.h | 5 + gdb/version.in | 2 +- gdb/windows-nat.c | 26 +- include/ChangeLog | 15 + include/elf/ChangeLog | 12 + include/elf/aarch64.h | 3 +- include/elf/mips.h | 6 +- include/opcode/ChangeLog | 31 + include/opcode/avr.h | 13 +- include/opcode/mips.h | 101 +- include/opcode/nios2.h | 2 +- libiberty/ChangeLog | 12 + libiberty/Makefile.in | 24 +- libiberty/configure | 56 +- libiberty/configure.ac | 46 +- opcodes/ChangeLog | 54 + opcodes/Makefile.am | 36 +- opcodes/Makefile.in | 21 +- opcodes/micromips-opc.c | 427 ++++--- opcodes/mips-dis.c | 108 +- opcodes/mips-opc.c | 1499 ++++++++++---------- opcodes/nios2-opc.c | 2 +- opcodes/rx-decode.c | 170 ++-- opcodes/rx-decode.opc | 8 + sim/arm/ChangeLog | 4 + sim/arm/aclocal.m4 | 40 + sim/arm/configure | 41 +- sim/avr/ChangeLog | 4 + sim/avr/aclocal.m4 | 40 + sim/avr/configure | 41 +- sim/bfin/ChangeLog | 13 + sim/bfin/Makefile.in | 2 +- sim/bfin/TODO | 4 + sim/bfin/aclocal.m4 | 40 + sim/bfin/configure | 41 +- sim/common/ChangeLog | 5 + sim/common/acinclude.m4 | 13 +- sim/common/aclocal.m4 | 40 + sim/common/configure | 41 +- sim/cr16/ChangeLog | 4 + sim/cr16/aclocal.m4 | 40 + sim/cr16/configure | 41 +- sim/cris/ChangeLog | 4 + sim/cris/aclocal.m4 | 40 + sim/cris/configure | 41 +- sim/d10v/ChangeLog | 4 + sim/d10v/aclocal.m4 | 40 + sim/d10v/configure | 41 +- sim/erc32/ChangeLog | 4 + sim/erc32/aclocal.m4 | 40 + sim/erc32/configure | 41 +- sim/frv/ChangeLog | 4 + sim/frv/aclocal.m4 | 40 + sim/frv/configure | 41 +- sim/h8300/ChangeLog | 4 + sim/h8300/aclocal.m4 | 40 + sim/h8300/configure | 41 +- sim/iq2000/ChangeLog | 4 + sim/iq2000/aclocal.m4 | 40 + sim/iq2000/configure | 41 +- sim/lm32/ChangeLog | 4 + sim/lm32/aclocal.m4 | 40 + sim/lm32/configure | 41 +- sim/m32c/ChangeLog | 4 + sim/m32c/aclocal.m4 | 40 + sim/m32c/configure | 41 +- sim/m32r/ChangeLog | 4 + sim/m32r/aclocal.m4 | 40 + sim/m32r/configure | 41 +- sim/m68hc11/ChangeLog | 4 + sim/m68hc11/aclocal.m4 | 40 + sim/m68hc11/configure | 41 +- sim/mcore/ChangeLog | 4 + sim/mcore/aclocal.m4 | 40 + sim/mcore/configure | 41 +- sim/microblaze/ChangeLog | 4 + sim/microblaze/aclocal.m4 | 40 + sim/microblaze/configure | 41 +- sim/mips/ChangeLog | 4 + sim/mips/aclocal.m4 | 40 + sim/mips/configure | 41 +- sim/mn10300/ChangeLog | 4 + sim/mn10300/aclocal.m4 | 40 + sim/mn10300/configure | 41 +- sim/moxie/ChangeLog | 4 + sim/moxie/aclocal.m4 | 40 + sim/moxie/configure | 41 +- sim/rl78/ChangeLog | 4 + sim/rl78/aclocal.m4 | 40 + sim/rl78/configure | 41 +- sim/rx/ChangeLog | 4 + sim/rx/aclocal.m4 | 40 + sim/rx/configure | 41 +- sim/sh/ChangeLog | 4 + sim/sh/aclocal.m4 | 40 + sim/sh/configure | 41 +- sim/sh64/ChangeLog | 4 + sim/sh64/aclocal.m4 | 40 + sim/sh64/configure | 41 +- sim/testsuite/sim/bfin/ChangeLog | 12 + sim/testsuite/sim/bfin/run-tests.sh | 36 +- sim/testsuite/sim/bfin/se_allopcodes.h | 22 +- sim/v850/ChangeLog | 4 + sim/v850/aclocal.m4 | 40 + sim/v850/configure | 41 +- 452 files changed, 10337 insertions(+), 3933 deletions(-) create mode 100644 gdb/gdbserver/tdesc.c create mode 100644 gdb/gdbserver/tdesc.h copy gdb/testsuite/{gdb.mi/solib-lib.c => gdb.base/break-probes-solib.c} (83%) copy gdb/testsuite/{gdb.cp/using-crash.cc => gdb.base/break-probes.c} (76%) create mode 100644 gdb/testsuite/gdb.base/break-probes.exp copy gdb/testsuite/{gdb.mi/solib-main.c => gdb.base/info-shared-solib1.c} (83%) copy gdb/testsuite/{gdb.mi/solib-main.c => gdb.base/info-shared-solib2.c} (83%) copy gdb/testsuite/{gdb.cp/using-crash.cc => gdb.base/info-shared.c} (59%) create mode 100644 gdb/testsuite/gdb.base/info-shared.exp copy gdb/testsuite/gdb.cp/{anon-struct.cc => derivation2.cc} (64%) copy gdb/testsuite/gdb.dwarf2/{implptrconst.exp => implptrpiece.exp} (58%) copy gdb/testsuite/{gdb.base/break-on-linker-gcd-function.cc => gdb.threads/dlopen-libpthread-lib.c} (71%) copy gdb/testsuite/{gdb.base/break-on-linker-gcd-function.cc => gdb.threads/dlopen-libpthread.c} (66%) create mode 100644 gdb/testsuite/gdb.threads/dlopen-libpthread.exp create mode 100644 gdb/testsuite/gdb.trace/mi-trace-unavailable.exp copy gdb/testsuite/{gdb.cp/abstract-origin.cc => gdb.trace/trace-unavailable.c} (75%) First 500 lines of diff: diff --git a/ChangeLog b/ChangeLog index 2d6d310..ed3bc27 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-06-01 George Thomas + + * include/opcode/avr.h: Rename AVR_ISA_XCH to AVR_ISA_RMW. Remove + from AVR_ISA_XMEGA and add new AVR_ISA_XMEGAU + 2013-05-06 Sandra Loosemore * COPYING.NEWLIB: Add Altera Corporation copyright. diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d1ec430..8377b35 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,90 @@ +2013-06-14 Yufeng Zhang + + * elf64-aarch64.c (elf64_aarch64_final_link_relocate): Call + aarch64_resolve_relocation and bfd_elf_aarch64_put_addend to + handle the relocations of R_AARCH64_JUMP26, R_AARCH64_CALL26, + R_AARCH64_LD64_GOT_LO12_NC, R_AARCH64_ADR_GOT_PAGE and + R_AARCH64_GOT_LD_PREL19. + +2013-06-13 Terry Guo + + PR ld/15302 + * elf32-arm.c (allocate_dynrelocs_for_symbol): Transform + ST_BRANCH_TO_ARM into ST_BRANCH_TO_THUMB if the target only + supports thumb instructions. + +2013-06-11 DJ Delorie + + * elf32-rl78.c (rl78_elf_relocate_section): Fix OPsub math. + +2013-06-11 Will Newton + + * elf64-aarch64.c (elf_aarch64_get_local_sym_hash): Use + ELF64_R_SYM instead of ELF32_R_SYM. + +2013-06-11 Nick Clifton + + * elf32-rl78.c (rl78_elf_finish_dynamic_sections): Onlly run + checks if the dynamic sections have been created and relaxation + has not been performed. + +2013-06-07 Will Newton + + * configure: Regenerate. + * configure.in: Build elf-ifunc.o for AArch64. + * elf64-aarch64.c: Include objalloc.h. + (elf64_aarch64_howto_dynrelocs): Add R_AARCH64_IRELATIVE howto. + (struct elf64_aarch64_link_hash_table): Add members for handling + R_AARCH64_IRELATIVE relocations. + (elf_aarch64_local_htab_hash): New function. + (elf_aarch64_local_htab_eq): New function. + (elf_aarch64_get_local_sym_hash): New function. + (elf64_aarch64_link_hash_table_create): Initialize local STT_GNU_IFUNC + symbol hash. + (elf64_aarch64_hash_table_free): Free local STT_GNU_IFUNC symbol hash. + (elf64_aarch64_final_link_relocate): Add sym argument. Add support + for handling STT_GNU_IFUNC symbols. + (elf64_aarch64_gc_sweep_hook): Add support for garbage collecting + references to STT_GNU_IFUNC symbols. + (elf64_aarch64_adjust_dynamic_symbol): Add support for handling + STT_GNU_IFUNC symbols. + (elf64_aarch64_check_relocs): Add support for handling STT_GNU_IFUNC + symbols. Ensure we don't increase plt.refcount from -1 to 0. + (elf64_aarch64_post_process_headers): Call _bfd_elf_set_osabi. + (elf64_aarch64_is_function_type): Remove function. + (elf64_aarch64_allocate_dynrelocs): Call + _bfd_elf_allocate_ifunc_dyn_relocs for STT_GNU_IFUNC symbols. + (elf_aarch64_allocate_local_dynrelocs): New function. + (elf64_aarch64_size_dynamic_sections): Call + elf_aarch64_allocate_local_dynrelocs. Initialize next_irelative_index. + (elf64_aarch64_create_small_pltn_entry): Add info argument. + Add support for creating .iplt entries for STT_GNU_IFUNC symbols. + (elf64_aarch64_finish_dynamic_symbol): Add support for handling + STT_GNU_IFUNC symbols and .iplt. + (elf_aarch64_finish_local_dynamic_symbol): New function. + (elf64_aarch64_finish_dynamic_sections): Call + elf_aarch64_finish_local_dynamic_symbol. + (elf64_aarch64_add_symbol_hook): New function. + +2013-06-03 Alan Modra + + * syms.c (_bfd_stab_section_find_nearest_line): Add last_str + var. Use it with last_stab. + +2013-05-30 Paul Brook + + * bfd-in2.h: Regenerate. + * elf32-mips.c (elf_mips_eh_howto): New. + (bfd_elf32_bfd_reloc_type_lookup ): Support BFD_RELOC_MIPS_EH. + (bfd_elf32_bfd_reloc_name_lookup): Likewise. + (mips_elf32_rtype_to_howto): Support R_MIPS_EH. + * elf64-mips.c (elf_mips_eh_howto): New. + (bfd_elf64_bfd_reloc_type_lookup): Support BFD_RELOC_MIPS_EH. + (bfd_elf64_bfd_reloc_name_lookup): Likewise. + (mips_elf64_rtype_to_howto): Support R_MIPS_EH. + * libbfd.h: Regenerate. + * reloc.c (BFD_RELOC_MIPS_EH): New. + 2013-05-29 Nick Clifton * dwarf2.c (struct dwarf2_debug): Add fields for handling diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index efc1a55..f5b98c5 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -2937,6 +2937,7 @@ to compensate for the borrow when the low bits are added. */ BFD_RELOC_MICROMIPS_TLS_TPREL_HI16, BFD_RELOC_MIPS_TLS_TPREL_LO16, BFD_RELOC_MICROMIPS_TLS_TPREL_LO16, + BFD_RELOC_MIPS_EH, /* MIPS ELF relocations (VxWorks and PLT extensions). */ diff --git a/bfd/configure b/bfd/configure index 090f981..3c6a1f6 100755 --- a/bfd/configure +++ b/bfd/configure @@ -15364,7 +15364,7 @@ do bfd_elf32_xtensa_be_vec) tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;; bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; - bfd_elf64_bigaarch64_vec) tb="$tb elf64-aarch64.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_bigaarch64_vec) tb="$tb elf64-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf64_hppa_linux_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;; @@ -15373,7 +15373,7 @@ do bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_vms_vec) tb="$tb elf64-ia64-vms.lo elf64-ia64.lo elfxx-ia64.lo elf64.lo vms-lib.lo vms-misc.lo $elf"; target_size=64 ;; - bfd_elf64_littleaarch64_vec)tb="$tb elf64-aarch64.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_littleaarch64_vec)tb="$tb elf64-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_little_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_littlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf64_mmix_vec) tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;; diff --git a/bfd/configure.in b/bfd/configure.in index ff14270..89f68fd 100644 --- a/bfd/configure.in +++ b/bfd/configure.in @@ -859,7 +859,7 @@ do bfd_elf32_xtensa_be_vec) tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;; bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; - bfd_elf64_bigaarch64_vec) tb="$tb elf64-aarch64.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_bigaarch64_vec) tb="$tb elf64-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf64_hppa_linux_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;; @@ -868,7 +868,7 @@ do bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_vms_vec) tb="$tb elf64-ia64-vms.lo elf64-ia64.lo elfxx-ia64.lo elf64.lo vms-lib.lo vms-misc.lo $elf"; target_size=64 ;; - bfd_elf64_littleaarch64_vec)tb="$tb elf64-aarch64.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_littleaarch64_vec)tb="$tb elf64-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_little_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_littlemips_vec) tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; bfd_elf64_mmix_vec) tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;; diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 2ed4741..fe01c9a 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -1,6 +1,5 @@ /* 32-bit ELF support for ARM - Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. + Copyright 1998-2013 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -13341,6 +13340,12 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf) h->root.u.def.value = th->root.u.def.value & ~1; } + /* Make sure we are not applying ST_BRANCH_TO_ARM to symbols + for thumb-only targets. */ + if (using_thumb_only (htab) + && h->target_internal == ST_BRANCH_TO_ARM) + h->target_internal = ST_BRANCH_TO_THUMB; + if (eh->dyn_relocs == NULL) return TRUE; diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 54ae641..c3c58c6 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -1538,6 +1538,22 @@ static reloc_howto_type elf_mips_jump_slot_howto = 0x0, /* dst_mask */ FALSE); /* pcrel_offset */ +/* Used in EH tables. */ +static reloc_howto_type elf_mips_eh_howto = + HOWTO (R_MIPS_EH, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS_EH", /* name */ + TRUE, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + FALSE); /* pcrel_offset */ + /* Set the GP value for OUTPUT_BFD. Returns FALSE if this is a dangerous relocation. */ @@ -2010,6 +2026,8 @@ bfd_elf32_bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code) return &elf_mips_copy_howto; case BFD_RELOC_MIPS_JUMP_SLOT: return &elf_mips_jump_slot_howto; + case BFD_RELOC_MIPS_EH: + return &elf_mips_eh_howto; } } @@ -2055,6 +2073,8 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, return &elf_mips_copy_howto; if (strcasecmp (elf_mips_jump_slot_howto.name, r_name) == 0) return &elf_mips_jump_slot_howto; + if (strcasecmp (elf_mips_eh_howto.name, r_name) == 0) + return &elf_mips_eh_howto; return NULL; } @@ -2079,6 +2099,8 @@ mips_elf32_rtype_to_howto (unsigned int r_type, return &elf_mips_copy_howto; case R_MIPS_JUMP_SLOT: return &elf_mips_jump_slot_howto; + case R_MIPS_EH: + return &elf_mips_eh_howto; default: if (r_type >= R_MICROMIPS_min && r_type < R_MICROMIPS_max) return &elf_micromips_howto_table_rel[r_type - R_MICROMIPS_min]; diff --git a/bfd/elf32-rl78.c b/bfd/elf32-rl78.c index 11d1ecc..651a8bd 100644 --- a/bfd/elf32-rl78.c +++ b/bfd/elf32-rl78.c @@ -810,10 +810,13 @@ rl78_elf_relocate_section { int32_t tmp1, tmp2; - RL78_STACK_POP (tmp2); - RL78_STACK_POP (tmp1); - tmp2 -= tmp1; - RL78_STACK_PUSH (tmp2); + /* For the expression "A - B", the assembler pushes A, + then B, then OPSUB. So the first op we pop is B, not + A. */ + RL78_STACK_POP (tmp2); /* B */ + RL78_STACK_POP (tmp1); /* A */ + tmp1 -= tmp2; /* A - B */ + RL78_STACK_PUSH (tmp1); } break; @@ -1270,24 +1273,28 @@ rl78_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED, bfd *dynobj; asection *splt; + if (!elf_hash_table (info)->dynamic_sections_created) + return TRUE; + /* As an extra sanity check, verify that all plt entries have been filled in. However, relaxing might have changed the relocs so that some plt entries don't get filled in, so we have to skip this check if we're relaxing. Unfortunately, check_relocs is called before relaxation. */ - if (info->relax_trip > 0) + if (info->relax_trip > 0) + return TRUE; + + if ((dynobj = elf_hash_table (info)->dynobj) != NULL + && (splt = bfd_get_linker_section (dynobj, ".plt")) != NULL) { - if ((dynobj = elf_hash_table (info)->dynobj) != NULL - && (splt = bfd_get_linker_section (dynobj, ".plt")) != NULL) + bfd_byte *contents = splt->contents; + unsigned int i, size = splt->size; + + for (i = 0; i < size; i += 4) { - bfd_byte *contents = splt->contents; - unsigned int i, size = splt->size; - for (i = 0; i < size; i += 4) - { - unsigned int x = bfd_get_32 (dynobj, contents + i); - BFD_ASSERT (x != 0); - } + unsigned int x = bfd_get_32 (dynobj, contents + i); + BFD_ASSERT (x != 0); } } diff --git a/bfd/elf64-aarch64.c b/bfd/elf64-aarch64.c index 68f03fc..d6ecbb4 100644 --- a/bfd/elf64-aarch64.c +++ b/bfd/elf64-aarch64.c @@ -142,6 +142,7 @@ #include "bfd_stdint.h" #include "elf-bfd.h" #include "bfdlink.h" +#include "objalloc.h" #include "elf/aarch64.h" static bfd_reloc_status_type @@ -398,6 +399,20 @@ static reloc_howto_type elf64_aarch64_howto_dynrelocs[] = ALL_ONES, /* dst_mask */ FALSE), /* pcrel_offset */ + HOWTO (R_AARCH64_IRELATIVE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 64, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_AARCH64_IRELATIVE", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + ALL_ONES, /* dst_mask */ + FALSE), /* pcrel_offset */ + }; /* Note: code such as elf64_aarch64_reloc_type_lookup expect to use e.g. @@ -1864,6 +1879,15 @@ struct elf64_aarch64_link_hash_table loader via DT_TLSDESC_GOT. The magic value (bfd_vma) -1 indicates an offset is not allocated. */ bfd_vma dt_tlsdesc_got; + + /* Used by local STT_GNU_IFUNC symbols. */ + htab_t loc_hash_table; + void * loc_hash_memory; + + /* The index of the next R_AARCH64_JUMP_SLOT entry in .rela.plt. */ + bfd_vma next_jump_slot_index; + /* The index of the next R_AARCH64_IRELATIVE entry in .rela.plt. */ + bfd_vma next_irelative_index; }; @@ -1973,6 +1997,72 @@ stub_hash_newfunc (struct bfd_hash_entry *entry, return entry; } +/* Compute a hash of a local hash entry. We use elf_link_hash_entry + for local symbol so that we can handle local STT_GNU_IFUNC symbols + as global symbol. We reuse indx and dynstr_index for local symbol + hash since they aren't used by global symbols in this backend. */ + +static hashval_t +elf_aarch64_local_htab_hash (const void *ptr) +{ + struct elf_link_hash_entry *h + = (struct elf_link_hash_entry *) ptr; + return ELF_LOCAL_SYMBOL_HASH (h->indx, h->dynstr_index); +} + +/* Compare local hash entries. */ + +static int +elf_aarch64_local_htab_eq (const void *ptr1, const void *ptr2) +{ + struct elf_link_hash_entry *h1 + = (struct elf_link_hash_entry *) ptr1; + struct elf_link_hash_entry *h2 + = (struct elf_link_hash_entry *) ptr2; + + return h1->indx == h2->indx && h1->dynstr_index == h2->dynstr_index; +} + +/* Find and/or create a hash entry for local symbol. */ + +static struct elf_link_hash_entry * +elf_aarch64_get_local_sym_hash (struct elf64_aarch64_link_hash_table *htab, + bfd *abfd, const Elf_Internal_Rela *rel, + bfd_boolean create) +{ + struct elf64_aarch64_link_hash_entry e, *ret; + asection *sec = abfd->sections; + hashval_t h = ELF_LOCAL_SYMBOL_HASH (sec->id, + ELF64_R_SYM (rel->r_info)); + void **slot; + + e.root.indx = sec->id; + e.root.dynstr_index = ELF64_R_SYM (rel->r_info); + slot = htab_find_slot_with_hash (htab->loc_hash_table, &e, h, + create ? INSERT : NO_INSERT); + + if (!slot) + return NULL; + + if (*slot) + { + ret = (struct elf64_aarch64_link_hash_entry *) *slot; + return &ret->root; + } + + ret = (struct elf64_aarch64_link_hash_entry *) + objalloc_alloc ((struct objalloc *) htab->loc_hash_memory, + sizeof (struct elf64_aarch64_link_hash_entry)); + if (ret) + { + memset (ret, 0, sizeof (*ret)); + ret->root.indx = sec->id; + ret->root.dynstr_index = ELF64_R_SYM (rel->r_info); + ret->root.dynindx = -1; + *slot = ret; + } + return &ret->root; +} /* Copy the extra info we tack onto an elf_link_hash_entry. */ @@ -2062,6 +2152,17 @@ elf64_aarch64_link_hash_table_create (bfd *abfd) return NULL; } + ret->loc_hash_table = htab_try_create (1024, + elf_aarch64_local_htab_hash, + elf_aarch64_local_htab_eq, + NULL); + ret->loc_hash_memory = objalloc_create (); + if (!ret->loc_hash_table || !ret->loc_hash_memory) + { + free (ret); + return NULL; + } + return &ret->root.root; } @@ -2073,6 +2174,11 @@ elf64_aarch64_hash_table_free (struct bfd_link_hash_table *hash) struct elf64_aarch64_link_hash_table *ret = (struct elf64_aarch64_link_hash_table *) hash; + if (ret->loc_hash_table) + htab_delete (ret->loc_hash_table); + if (ret->loc_hash_memory) + objalloc_free ((struct objalloc *) ret->loc_hash_memory); + bfd_hash_table_free (&ret->stub_hash_table); _bfd_elf_link_hash_table_free (hash); } @@ -3770,8 +3876,10 @@ elf64_aarch64_final_link_relocate (reloc_howto_type *howto, struct elf_link_hash_entry *h, bfd_boolean *unresolved_reloc_p, bfd_boolean save_addend, - bfd_vma *saved_addend) + bfd_vma *saved_addend, + Elf_Internal_Sym *sym) { + Elf_Internal_Shdr *symtab_hdr; unsigned int r_type = howto->type; unsigned long r_symndx; bfd_byte *hit_data = contents + rel->r_offset; @@ -3782,6 +3890,8 @@ elf64_aarch64_final_link_relocate (reloc_howto_type *howto, globals = elf64_aarch64_hash_table (info); + symtab_hdr = &elf_symtab_hdr (input_bfd); + BFD_ASSERT (is_aarch64_elf (input_bfd)); r_symndx = ELF64_R_SYM (rel->r_info); @@ -3803,6 +3913,184 @@ elf64_aarch64_final_link_relocate (reloc_howto_type *howto, weak_undef_p = (h ? h->root.type == bfd_link_hash_undefweak : bfd_is_und_section (sym_sec)); + + /* Since STT_GNU_IFUNC symbol must go through PLT, we handle + it here if it is defined in a non-shared object. */ + if (h != NULL + && h->type == STT_GNU_IFUNC + && h->def_regular) + { + asection *plt; + const char *name; + asection *base_got; + bfd_vma off; + + if ((input_section->flags & SEC_ALLOC) == 0 + || h->plt.offset == (bfd_vma) -1) + abort (); + + /* STT_GNU_IFUNC symbol must go through PLT. */ + plt = globals->root.splt ? globals->root.splt : globals->root.iplt; + value = (plt->output_section->vma + plt->output_offset + h->plt.offset); hooks/post-receive -- Repository for Project Archer.