| OLD | NEW |
| 1 /* Target-dependent code for the GNU C Library (glibc). | 1 /* Target-dependent code for the GNU C Library (glibc). |
| 2 | 2 |
| 3 Copyright (C) 2002-2003, 2007-2012 Free Software Foundation, Inc. | 3 Copyright (C) 2002-2013 Free Software Foundation, Inc. |
| 4 | 4 |
| 5 This file is part of GDB. | 5 This file is part of GDB. |
| 6 | 6 |
| 7 This program is free software; you can redistribute it and/or modify | 7 This program is free software; you can redistribute it and/or modify |
| 8 it under the terms of the GNU General Public License as published by | 8 it under the terms of the GNU General Public License as published by |
| 9 the Free Software Foundation; either version 3 of the License, or | 9 the Free Software Foundation; either version 3 of the License, or |
| 10 (at your option) any later version. | 10 (at your option) any later version. |
| 11 | 11 |
| 12 This program is distributed in the hope that it will be useful, | 12 This program is distributed in the hope that it will be useful, |
| 13 but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 the same objfile. If we are at the entry point of `fixup', then | 46 the same objfile. If we are at the entry point of `fixup', then |
| 47 we set a breakpoint at the return address (at the top of the | 47 we set a breakpoint at the return address (at the top of the |
| 48 stack), and continue. | 48 stack), and continue. |
| 49 | 49 |
| 50 It's kind of gross to do all these checks every time we're | 50 It's kind of gross to do all these checks every time we're |
| 51 called, since they don't change once the executable has gotten | 51 called, since they don't change once the executable has gotten |
| 52 started. But this is only a temporary hack --- upcoming versions | 52 started. But this is only a temporary hack --- upcoming versions |
| 53 of GNU/Linux will provide a portable, efficient interface for | 53 of GNU/Linux will provide a portable, efficient interface for |
| 54 debugging programs that use shared libraries. */ | 54 debugging programs that use shared libraries. */ |
| 55 | 55 |
| 56 struct objfile *objfile; | 56 struct bound_minimal_symbol resolver |
| 57 struct minimal_symbol *resolver | 57 = lookup_minimal_symbol_and_objfile ("_dl_runtime_resolve"); |
| 58 = lookup_minimal_symbol_and_objfile ("_dl_runtime_resolve", &objfile); | |
| 59 | 58 |
| 60 if (resolver) | 59 if (resolver.minsym) |
| 61 { | 60 { |
| 62 /* The dynamic linker began using this name in early 2005. */ | 61 /* The dynamic linker began using this name in early 2005. */ |
| 63 struct minimal_symbol *fixup | 62 struct minimal_symbol *fixup |
| 64 » = lookup_minimal_symbol ("_dl_fixup", NULL, objfile); | 63 » = lookup_minimal_symbol ("_dl_fixup", NULL, resolver.objfile); |
| 65 | 64 |
| 66 /* This is the name used in older versions. */ | 65 /* This is the name used in older versions. */ |
| 67 if (! fixup) | 66 if (! fixup) |
| 68 fixup = lookup_minimal_symbol ("fixup", NULL, objfile); | 67 fixup = lookup_minimal_symbol ("fixup", NULL, resolver.objfile); |
| 69 | 68 |
| 70 if (fixup && SYMBOL_VALUE_ADDRESS (fixup) == pc) | 69 if (fixup && SYMBOL_VALUE_ADDRESS (fixup) == pc) |
| 71 return frame_unwind_caller_pc (get_current_frame ()); | 70 return frame_unwind_caller_pc (get_current_frame ()); |
| 72 } | 71 } |
| 73 | 72 |
| 74 return 0; | 73 return 0; |
| 75 } | 74 } |
| OLD | NEW |