Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Side by Side Diff: gdb/testsuite/gdb.base/gnu-debugdata.exp

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/testsuite/gdb.base/gnu-debugdata.c ('k') | gdb/testsuite/gdb.base/gnu-ifunc.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright 2012-2013 Free Software Foundation, Inc.
2 #
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15
16 standard_testfile
17
18 if [build_executable ${testfile}.exp $testfile] {
19 return -1
20 }
21
22 set pipeline_counter 0
23
24 set objcopy_program [gdb_find_objcopy]
25
26 # Run a pipeline of processes through 'run_on_host'.
27 # TEST is the base name of the test, it is modified and passed to 'run_on_host'.
28 # Each subsequent argument is a list of the form {PROGRAM [ARG]...}.
29 # It is passed to 'run_on_host'. However, before being passed, if input and
30 # output files are not specified in the list, then this proc provides them.
31 # Each program in the pipeline takes its input from the previous
32 # program's output.
33
34 proc pipeline {test args} {
35 global pipeline_counter
36
37 set input_file {}
38 foreach arglist $args {
39 verbose "raw args are $arglist"
40
41 set program [lindex $arglist 0]
42 set arguments [lindex $arglist 1]
43 set input [lindex $arglist 2]
44 set output [lindex $arglist 3]
45
46 if {$input == ""} {
47 set input $input_file
48 }
49 if {$output == ""} {
50 set output [standard_output_file pipe.[pid].$pipeline_counter]
51 incr pipeline_counter
52 }
53 verbose "cooked args are [list $program $arguments $input $output]"
54
55 if {[run_on_host "$test - invoke $program" $program $arguments \
56 $input $output]} {
57 return -1
58 }
59
60 set input_file $output
61 }
62 return 0
63 }
64
65 # Extract the dynamic symbols from the main binary, there is no need
66 # to also have these in the normal symbol table.
67 remote_file host delete ${binfile}.dynsyms
68 if {[pipeline "nm -D" \
69 [list [transform nm] "-D ${binfile} --format=posix --defined-only"] \
70 [list awk "\\{print\\ \\\$1\\}"] \
71 [list sort "" "" "${binfile}.dynsyms"]]} {
72 return -1
73 }
74
75 # Extract all the text (i.e. function) symbols from the debuginfo.
76 # (Note that we actually also accept "D" symbols, for the benefit
77 # of platforms like PowerPC64 that use function descriptors.)
78 remote_file host delete ${binfile}.funcsyms
79 if {[pipeline "nm" \
80 [list [transform nm] "${binfile} --format=posix --defined-only"] \
81 [list awk "\\{if(\\\$2==\"T\"||\\\$2==\"t\"||\\\$2==\"D\")print\\ \\\$1 \\}"] \
82 [list sort "" "" "${binfile}.funcsyms"]]} {
83 return -1
84 }
85
86 # Keep all the function symbols not already in the dynamic symbol
87 # table.
88 remote_file host delete ${binfile}.keep_symbols
89 if {[run_on_host "comm" "comm" "-13 ${binfile}.dynsyms ${binfile}.funcsyms" "" \
90 "${binfile}.keep_symbols"]} {
91 return -1
92 }
93
94 # GDB specific - we do not have split executable in advance.
95 remote_file host delete ${binfile}.strip
96 if {[run_on_host "strip" [transform strip] \
97 "--strip-all -R .comment -o ${binfile}.strip ${binfile}"]} {
98 return -1
99 }
100
101 # Separate full debug info into ${binfile}.debug.
102 remote_file host delete ${binfile}.debug
103 if {[run_on_host "copydebug" ${objcopy_program} \
104 "--only-keep-debug ${binfile} ${binfile}.debug"]} {
105 return -1
106 }
107
108 # Copy the full debuginfo, keeping only a minimal set of symbols and
109 # removing some unnecessary sections.
110 remote_file host delete ${binfile}.mini_debuginfo
111 if {[run_on_host "objcopy 1" ${objcopy_program} "-S --remove-section .gdb_index --remove-section .comment --keep-symbols=${binfile}.keep_symbols ${binfile}.debu g ${binfile}.mini_debuginfo"]} {
112 return -1
113 }
114
115 # Add the .gnu_debuglink section to the .gnu_debugdata file.
116 # .gnu_debuglink is normally not present in the .gnu_debugdata section but in
117 # some files there may be PT_NOTE with NT_GNU_BUILD_ID and GDB could look up
118 # the .debug file from it. This is only an additional test of GDB, such link
119 # is not present in usual MiniDebugInfo sections.
120 if {[run_on_host "addlink" ${objcopy_program} \
121 "--add-gnu-debuglink=${binfile}.debug ${binfile}.mini_debuginfo ${binfi le}.mini_debuginfo-debuglink"]} {
122 return -1
123 }
124
125 # Inject the compressed data into the .gnu_debugdata section of the
126 # original binary.
127 remote_file host delete ${binfile}.mini_debuginfo-debuglink.xz
128 if {[run_on_host "xz" "xz" "-k ${binfile}.mini_debuginfo-debuglink"]} {
129 return -1
130 }
131 remote_file host delete ${binfile}.test
132 if {[run_on_host "objcopy 2" ${objcopy_program} "--add-section .gnu_debugdata=${ binfile}.mini_debuginfo-debuglink.xz ${binfile}.strip ${binfile}.test"]} {
133 return -1
134 }
135
136 clean_restart "$testfile.strip"
137
138 gdb_test "p debugdata_function" \
139 {No symbol table is loaded\. Use the "file" command\.} \
140 "no symtab"
141
142 clean_restart "$testfile.test"
143
144 if {$gdb_file_cmd_debug_info == "lzma"} {
145 unsupported "LZMA support not available in this gdb"
146 } else {
147 gdb_test "p debugdata_function" \
148 { = {<text variable, no debug info>} 0x[0-9a-f]+ <debugdata_function>} \
149 "have symtab"
150 }
151
152 # Be sure to test the 'close' method on the MiniDebugInfo BFD.
153 if {[gdb_unload]} {
154 fail "unload MiniDebugInfo"
155 } else {
156 pass "unload MiniDebugInfo"
157 }
158
159 gdb_exit
OLDNEW
« no previous file with comments | « gdb/testsuite/gdb.base/gnu-debugdata.c ('k') | gdb/testsuite/gdb.base/gnu-ifunc.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698