2012-01-16 Pedro Alves <palves@redhat.com>
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / macscp.exp
1 # Test macro scoping.
2 # Copyright 2002, 2007-2012 Free Software Foundation, Inc.
3
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17
18 set srcfile macscp1.c
19 set testfile "macscp"
20 set objfile ${objdir}/${subdir}/${testfile}.o
21 set binfile ${objdir}/${subdir}/${testfile}
22
23 set options { debug additional_flags=-DFROM_COMMANDLINE=ARG}
24
25 get_compiler_info ${binfile}
26 if [test_compiler_info gcc*] {
27 lappend options additional_flags=-g3
28 }
29
30 # Generate the intermediate object file. This is required by Darwin to
31 # have access to the .debug_macinfo section.
32 if {[gdb_compile "${srcdir}/${subdir}/macscp1.c" "${objfile}" \
33 object $options] != ""
34 || [gdb_compile "${objfile}" "${binfile}" executable $options] != "" } {
35 untested macscp.exp
36 return -1
37 }
38
39 gdb_exit
40 gdb_start
41 gdb_reinitialize_dir $srcdir/$subdir
42 gdb_load ${binfile}
43
44
45 # Ask GDB to show the current definition of MACRO, and return a list
46 # describing the result.
47 #
48 # The return value has the form {FILE1 FILE2 ... DEF}, which means
49 # that MACRO has the definition `DEF', and was defined in `FILE1',
50 # which was included from `FILE2', included from ... .
51 #
52 # If GDB says that MACRO has no definition, return the string `undefined'.
53 #
54 # If GDB complains that it doesn't have any information about
55 # preprocessor macro definitions, return the string `no-macro-info'.
56 #
57 # If expect times out waiting for GDB, we return the string `timeout'.
58 #
59 # If GDB's output doesn't otherwise match what we're expecting, we
60 # return the empty string.
61
62 proc info_macro {macro} {
63 global gdb_prompt
64
65 set filepat {macscp[0-9]+\.[ch]}
66 set definition {}
67 set location {}
68
69 # Line number zero is set for macros defined from the compiler command-line.
70 # Such macros are not being tested by this function.
71 set nonzero {[1-9][0-9]*}
72
73 send_gdb "info macro ${macro}\n"
74
75 set debug_me 0
76
77 if {$debug_me} {exp_internal 1}
78 gdb_expect {
79 -re "Defined at \[^\r\n\]*(${filepat}):${nonzero}\[\r\n\]" {
80 # `location' and `definition' should be empty when we see
81 # this message.
82 if {[llength $location] == 0 && [llength $definition] == 0} {
83 set location $expect_out(1,string)
84 exp_continue
85 } else {
86 # Exit this expect loop, with a result indicating failure.
87 set definition {}
88 }
89 }
90 -re "The symbol `${macro}' has no definition as a C/C\\+\\+ preprocessor macro\[^\r\n\]*\[\r\n\]" {
91 # `location' and `definition' should be empty when we see
92 # this message.
93 if {[llength $location] == 0 && [llength $definition] == 0} {
94 set definition undefined
95 exp_continue
96 } else {
97 # Exit this expect loop, with a result indicating failure.
98 set definition {}
99 }
100 }
101 -re "^\[\r\n\]* included at \[^\r\n\]*(${filepat}):${nonzero}\[\r\n\]" {
102 # `location' should *not* be empty when we see this
103 # message. It should have recorded at least the initial
104 # `Defined at ' message (for definitions) or ` at' message
105 # (for undefined symbols).
106 if {[llength $location] != 0} {
107 lappend location $expect_out(1,string)
108 exp_continue
109 } else {
110 # Exit this expect loop, with a result indicating failure.
111 set definition {}
112 }
113 }
114 -re "^\[\r\n\]*at \[^\r\n\]*(${filepat}):${nonzero}\[\r\n\]" {
115 # This appears after a `has no definition' message.
116 # `location' should be empty when we see it.
117 if {[string compare $definition undefined] == 0 \
118 && [llength $location] == 0} {
119 set location $expect_out(1,string)
120 exp_continue
121 } else {
122 # Exit this expect loop, with a result indicating failure.
123 set definition {}
124 }
125 }
126 -re "#define ${macro} (\[^\r\n\]*)\[\r\n\]" {
127 # `definition' should be empty when we see this message.
128 if {[string compare $definition ""] == 0} {
129 set definition $expect_out(1,string)
130 exp_continue
131 } else {
132 # Exit this expect loop, with a result indicating failure.
133 set definition {}
134 }
135 }
136 -re "has no preprocessor macro information.*$gdb_prompt $" {
137 set definition no-macro-info
138 }
139 -re "$gdb_prompt $" {
140 # Exit the expect loop; let the existing value of `definition'
141 # indicate failure or success.
142 }
143 timeout {
144 set definition timeout
145 }
146 }
147 if {$debug_me} {exp_internal 0}
148
149 switch -exact -- $definition {
150 no-macro-info { return no-macro-info }
151 timeout { return timeout }
152 undefined { return undefined }
153 default {
154 if {[llength $location] >= 1} {
155 return [concat $location [list $definition]]
156 } else {
157 return {}
158 }
159 }
160 }
161 }
162
163
164 # Call info_macro to show the definition of MACRO. Expect a result of
165 # EXPECTED. Use WHERE in pass/fail messages to identify the context.
166 # Return non-zero if we should abort the entire test file, or zero if
167 # we can continue.
168 proc check_macro {macro expected where} {
169 set func_def [info_macro $macro]
170 if {[string compare $func_def $expected] == 0} {
171 pass "info macro $macro $where"
172 } else {
173 switch -exact -- $func_def {
174 no-macro-info {
175 xfail "executable includes no macro debugging information"
176 return 1
177 }
178 undefined {
179 fail "info macro $macro $where (undefined)"
180 return 1
181 }
182 timeout {
183 fail "info macro $macro $where (timeout)"
184 }
185 default {
186 fail "info macro $macro $where"
187 }
188 }
189 }
190 return 0
191 }
192
193
194 # List the function FUNC, and then show the definition of MACRO,
195 # expecting the result EXPECTED.
196 proc list_and_check_macro {func macro expected} {
197 gdb_test "list $func" ".*${func}.*" "list $func for $macro"
198 return [check_macro $macro $expected "after `list $func'"]
199 }
200
201 gdb_test "list main" ".*main.*" "list main for support check"
202 set macro_support "unknown"
203 gdb_test_multiple "info source" "Test macro information" {
204 -re "Includes preprocessor macro info\..*$gdb_prompt $" {
205 set macro_support 1
206 verbose "Source has macro information"
207 }
208 -re "Does not include preprocessor macro info\..*$gdb_prompt $" {
209 set macro_support 0
210 verbose "Source has no macro information"
211 }
212 default {
213 warning "couldn't check macro support (no valid response)."
214 }
215 }
216 if {$macro_support == 0} {
217 unsupported "Skipping test because debug information does not include macro information."
218 return 0
219 }
220
221 list_and_check_macro main WHERE {macscp1.c {before macscp1_3}}
222 list_and_check_macro macscp2_2 WHERE {macscp2.h macscp1.c {before macscp2_2}}
223 list_and_check_macro macscp3_2 WHERE {macscp3.h macscp1.c {before macscp3_2}}
224
225
226 # Assuming the current position inside program by `list' from above.
227 gdb_test "info macro FROM_COMMANDLINE" \
228 "Defined at \[^\r\n\]*:0\r\n-DFROM_COMMANDLINE=ARG"
229
230
231 # Although GDB's macro table structures distinguish between multiple
232 # #inclusions of the same file, GDB's other structures don't. So the
233 # `list' command here doesn't reliably select one #inclusion or the
234 # other, even though it could. It would be nice to eventually change
235 # GDB's structures to handle this correctly.
236 gdb_test "list macscp4_2_from_macscp2" ".*macscp4_2_, MACSCP4_INCLUSION.*"
237 switch -exact -- [info_macro WHERE] {
238 {macscp4.h macscp2.h macscp1.c {before macscp4_2_..., from macscp2.h}} {
239 pass "info macro WHERE after `list macscp_4_2_from_macscp2'"
240 }
241 {macscp4.h macscp3.h macscp1.c {before macscp4_2_..., from macscp3.h}} {
242 setup_kfail "gdb/555" *-*-*
243 fail "info macro WHERE after `list macscp_4_2_from_macscp2' (gdb/555)"
244 }
245 timeout {
246 fail "info macro WHERE after `list macscp_4_2_from_macscp2' (timeout)"
247 }
248 default { fail "info macro WHERE after `list macscp_4_2_from_macscp2'" }
249 }
250
251 gdb_test "list macscp4_2_from_macscp3" ".*macscp4_2_, MACSCP4_INCLUSION.*"
252 switch -exact -- [info_macro WHERE] {
253 {macscp4.h macscp3.h macscp1.c {before macscp4_2_..., from macscp3.h}} {
254 pass "info macro WHERE after `list macscp_4_2_from_macscp3'"
255 }
256 {macscp4.h macscp2.h macscp1.c {before macscp4_2_..., from macscp2.h}} {
257 setup_kfail "gdb/555" *-*-*
258 fail "info macro WHERE after `list macscp_4_2_from_macscp3' (gdb/555)"
259 }
260 timeout {
261 fail "info macro WHERE after `list macscp_4_2_from_macscp3' (timeout)"
262 }
263 default { fail "info macro WHERE after `list macscp_4_2_from_macscp3'" }
264 }
265
266
267 #### Test the selection of the macro scope by the current frame.
268
269 ### A table of functions, in the order they will be reached, which is
270 ### also the order they appear in the preprocessed output. Each entry
271 ### has the form {FUNCNAME WHERE KFAILWHERE}, where:
272 ### - FUNCNAME is the name of the function,
273 ### - WHERE is the definition we expect to see for the macro `WHERE', as
274 ### returned by `info_macro', and
275 ### - KFAILWHERE is an alternate definition which should be reported
276 ### as a `known failure', due to GDB's inability to distinguish multiple
277 ### #inclusions of the same file.
278 ### KFAILWHERE may be omitted.
279
280 set funcs {
281 {
282 macscp1_1
283 {macscp1.c {before macscp1_1}}
284 }
285 {
286 macscp2_1
287 {macscp2.h macscp1.c {before macscp2_1}}
288 }
289 {
290 macscp4_1_from_macscp2
291 {macscp4.h macscp2.h macscp1.c {before macscp4_1_..., from macscp2.h}}
292 {macscp4.h macscp3.h macscp1.c {before macscp4_1_..., from macscp3.h}}
293 }
294 {
295 macscp4_2_from_macscp2
296 {macscp4.h macscp2.h macscp1.c {before macscp4_2_..., from macscp2.h}}
297 {macscp4.h macscp3.h macscp1.c {before macscp4_2_..., from macscp3.h}}
298 }
299 {
300 macscp2_2
301 {macscp2.h macscp1.c {before macscp2_2}}
302 }
303 {
304 macscp1_2
305 {macscp1.c {before macscp1_2}}
306 }
307 {
308 macscp3_1
309 {macscp3.h macscp1.c {before macscp3_1}}
310 }
311 {
312 macscp4_1_from_macscp3
313 {macscp4.h macscp3.h macscp1.c {before macscp4_1_..., from macscp3.h}}
314 {macscp4.h macscp2.h macscp1.c {before macscp4_1_..., from macscp2.h}}
315 }
316 {
317 macscp4_2_from_macscp3
318 {macscp4.h macscp3.h macscp1.c {before macscp4_2_..., from macscp3.h}}
319 {macscp4.h macscp2.h macscp1.c {before macscp4_2_..., from macscp2.h}}
320 }
321 {
322 macscp3_2
323 {macscp3.h macscp1.c {before macscp3_2}}
324 }
325 {
326 macscp1_3
327 {macscp1.c {before macscp1_3}}
328 }
329 }
330
331 proc maybe_kfail { func test_name } {
332 # We can't get the right scope info when we're stopped in
333 # the macro4_ functions.
334 if {[string match macscp4_* $func]} {
335 kfail gdb/555 "$test_name"
336 } else {
337 fail "$test_name"
338 }
339 }
340
341 # Start the program running.
342 if {! [runto_main]} {
343 fail "macro tests suppressed: couldn't run to main"
344 return 0
345 }
346
347 # Set a breakpoint on each of the functions.
348 foreach func_entry $funcs {
349 set func [lindex $func_entry 0]
350 gdb_test "break $func" "Breakpoint.*"
351 }
352
353 # Run to each of the breakpoints and check the definition (or lack
354 # thereof) of each macro.
355 for {set i 0} {$i < [llength $funcs]} {incr i} {
356 set func_entry [lindex $funcs $i]
357 set func [lindex $func_entry 0]
358 set expected [lindex $func_entry 1]
359 set kfail_expected [lindex $func_entry 2]
360
361 # Run to the breakpoint for $func.
362 gdb_test "continue" "Breakpoint $decimal, $func .*" "continue to $func"
363
364 # Check the macro WHERE.
365 set result [info_macro WHERE]
366 if {[string compare $result $expected] == 0} {
367 pass "info macro WHERE stopped in $func"
368 } elseif {[string compare $result $kfail_expected] == 0} {
369 setup_kfail "gdb/555" *-*-*
370 fail "info macro WHERE stopped in $func (gdb/555)"
371 } elseif {[string compare $result timeout] == 0} {
372 fail "info macro WHERE stopped in $func (timeout)"
373 } else {
374 fail "info macro WHERE stopped in $func"
375 }
376
377 # Check that the BEFORE_<func> macros for all prior functions are
378 # #defined, and that those for all subsequent functions are not.
379 for {set j 0} {$j < [llength $funcs]} {incr j} {
380 if {$j != $i} {
381 set func_j_entry [lindex $funcs $j]
382 set func_j [lindex $func_j_entry 0]
383
384 set before_macro "BEFORE_[string toupper $func_j]"
385 set test_name \
386 "$before_macro defined/undefined when stopped at $func"
387 set result [info_macro $before_macro]
388
389 if {$j < $i} {
390 if {[llength $result] >= 2 && \
391 [string compare [lindex $result end] {}] == 0} {
392 pass $test_name
393 } elseif {[string compare $result timeout] == 0} {
394 fail "$test_name (timeout)"
395 } else {
396 maybe_kfail $func "$test_name"
397 }
398 } elseif {$j > $i} {
399 switch -- [lindex $result end] {
400 undefined { pass $test_name }
401 timeout { fail "$test_name (timeout)" }
402 default {
403 maybe_kfail $func "$test_name"
404 }
405 }
406 }
407
408 set until_macro "UNTIL_[string toupper $func_j]"
409 set test_name \
410 "$until_macro defined/undefined when stopped at $func"
411 set result [info_macro $until_macro]
412
413 if {$j <= $i} {
414 switch -- [lindex $result end] {
415 undefined { pass $test_name }
416 timeout { fail "$test_name (timeout)" }
417 default {
418 maybe_kfail $func "$test_name"
419 }
420 }
421 } elseif {$j > $i} {
422 if {[llength $result] >= 2 && \
423 [string compare [lindex $result end] {}] == 0} {
424 pass $test_name
425 } elseif {[string compare $result timeout] == 0} {
426 fail "$test_name (timeout)"
427 } else {
428 maybe_kfail $func "$test_name"
429 }
430 }
431 }
432 }
433 }
434
435 gdb_test "break [gdb_get_line_number "set breakpoint here"]" \
436 "Breakpoint.*at.* file .*, line.*" \
437 "breakpoint macscp_expr"
438
439 gdb_test "continue" "foo = 0;.*" "continue to macsp_expr"
440
441 gdb_test "print address.addr" \
442 " = 0" \
443 "print address.addr"
444
445 gdb_test "print MACRO_TO_EXPAND" \
446 "No symbol \"MACRO_TO_EXPAND\" in current context\." \
447 "print expression with macro before define."
448
449 gdb_test "next" "foo = 1;" "next to definition 1"
450
451 gdb_test "print MACRO_TO_EXPAND" \
452 " = 0" \
453 "print expression with macro in scope."
454
455 gdb_test_no_output "macro define MACRO_TO_EXPAND 72" \
456 "user macro override"
457
458 gdb_test "print MACRO_TO_EXPAND" \
459 " = 72" \
460 "choose user macro"
461
462 gdb_test_no_output "macro undef MACRO_TO_EXPAND" \
463 "remove user override"
464
465 gdb_test "print MACRO_TO_EXPAND" \
466 " = 0" \
467 "print expression with macro after removing override"
468
469 gdb_test "next" "foo = 2;" "next to definition 2"
470
471 gdb_test "print MACRO_TO_EXPAND" \
472 "No symbol \"MACRO_TO_EXPAND\" in current context\." \
473 "print expression with macro after undef."
474
475 gdb_test_no_output "macro define MACRO_TO_EXPAND 5" \
476 "basic macro define"
477
478 gdb_test "print MACRO_TO_EXPAND" \
479 " = 5" \
480 "expansion of defined macro"
481
482 gdb_test "macro list" \
483 "macro define MACRO_TO_EXPAND 5" \
484 "basic macro list"
485
486 gdb_test_no_output "macro define MACRO_TO_EXPAND(x) x" \
487 "basic redefine, macro with args"
488
489 gdb_test "print MACRO_TO_EXPAND (7)" \
490 " = 7" \
491 "expansion of macro with arguments"
492
493 gdb_test_no_output "macro undef MACRO_TO_EXPAND" \
494 "basic macro undef"
495
496 gdb_test "print MACRO_TO_EXPAND" \
497 "No symbol \"MACRO_TO_EXPAND\" in current context\." \
498 "print expression with macro after user undef."
499
500 # Regression test; this used to crash.
501 gdb_test "macro define" \
502 "usage: macro define.*" \
503 "macro define with no arguments"
504
505 # Regression test; this used to crash.
506 gdb_test "macro undef" \
507 "usage: macro undef.*" \
508 "macro undef with no arguments"
509
510 # Completion tests.
511
512 # The macro FIFTY_SEVEN is in scope at this point.
513 send_gdb "p FIFTY_\t"
514 gdb_expect {
515 -re "^p FIFTY_SEVEN $"\
516 { send_gdb "\n"
517 gdb_expect {
518 -re "^.* = 57.*$gdb_prompt $"\
519 { pass "complete 'p FIFTY_SEVEN'"}
520 -re ".*$gdb_prompt $" { fail "complete 'p FIFTY_SEVEN'"}
521 timeout {fail "(timeout) complete 'p FIFTY_SEVEN'"}
522 }
523 }
524 -re ".*$gdb_prompt $" { fail "complete 'p FIFTY_SEVEN'" }
525 timeout { fail "(timeout) complete 'p FIFTY_SEVEN' 2" }
526 }
527
528 # The macro TWENTY_THREE is not in scope.
529 send_gdb "p TWENTY_\t"
530 gdb_expect {
531 -re "^p TWENTY_\\\x07$"\
532 { send_gdb "\n"
533 gdb_expect {
534 -re "No symbol \"TWENTY_\" in current context\\..*$gdb_prompt $"\
535 { pass "complete 'p TWENTY_'"}
536 -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_'"}
537 timeout {fail "(timeout) complete 'p TWENTY_'"}
538 }
539 }
540 -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_'" }
541 timeout { fail "(timeout) complete 'p TWENTY_' 2" }
542 }
543
544 # The macro FORTY_EIGHT was undefined and thus is not in scope.
545 send_gdb "p FORTY_\t"
546 gdb_expect {
547 -re "^p FORTY_\\\x07$"\
548 { send_gdb "\n"
549 gdb_expect {
550 -re "No symbol \"FORTY_\" in current context\\..*$gdb_prompt $"\
551 { pass "complete 'p FORTY_'"}
552 -re ".*$gdb_prompt $" { fail "complete 'p FORTY_'"}
553 timeout {fail "(timeout) complete 'p FORTY_'"}
554 }
555 }
556 -re ".*$gdb_prompt $" { fail "complete 'p FORTY_'" }
557 timeout { fail "(timeout) complete 'p FORTY_' 2" }
558 }
559
560 gdb_test_no_output "macro define TWENTY_THREE 25" \
561 "defining TWENTY_THREE"
562
563 # User-defined macros are always in scope.
564 send_gdb "p TWENTY_\t"
565 gdb_expect {
566 -re "^p TWENTY_THREE $"\
567 { send_gdb "\n"
568 gdb_expect {
569 -re "^.* = 25.*$gdb_prompt $"\
570 { pass "complete 'p TWENTY_THREE'"}
571 -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_THREE'"}
572 timeout {fail "(timeout) complete 'p TWENTY_THREE'"}
573 }
574 }
575 -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_THREE'" }
576 timeout { fail "(timeout) complete 'p TWENTY_THREE' 2" }
577 }
578
579 # Splicing tests.
580
581 gdb_test "macro expand SPLICE(x, y)" \
582 "expands to: xy" \
583 "basic macro splicing"
584
585 gdb_test_no_output "macro define robotinvasion 2010" \
586 "define splice helper"
587
588 gdb_test "macro expand SPLICE(robot, invasion)" \
589 "expands to: *2010" \
590 "splicing plus expansion"
591
592 # Varargs tests.
593
594 gdb_test_no_output "macro define va_c99(...) varfunc (fixedarg, __VA_ARGS__)" \
595 "define first varargs helper"
596
597 gdb_test_no_output "macro define va2_c99(x, y, ...) varfunc (fixedarg, x, y, __VA_ARGS__)" \
598 "define second varargs helper"
599
600 gdb_test_no_output "macro define va_gnu(args...) varfunc (fixedarg, args)" \
601 "define third varargs helper"
602
603 gdb_test_no_output "macro define va2_gnu(args...) varfunc (fixedarg, ## args)" \
604 "define fourth varargs helper"
605
606 gdb_test "macro expand va_c99(one, two, three)" \
607 "expands to: *varfunc \\(fixedarg, *one, two, three\\)" \
608 "c99 varargs expansion"
609
610 gdb_test "macro expand va_c99()" \
611 "expands to: *varfunc \\(fixedarg, *\\)" \
612 "c99 varargs expansion without an argument"
613
614 gdb_test "macro expand va2_c99(one, two, three, four)" \
615 "expands to: *varfunc \\(fixedarg, *one, two, three, four\\)" \
616 "c99 varargs expansion, multiple formal arguments"
617
618 gdb_test "macro expand va_gnu(one, two, three, four)" \
619 "expands to: *varfunc \\(fixedarg, *one, two, three, four\\)" \
620 "gnu varargs expansion"
621
622 gdb_test "macro expand va_gnu()" \
623 "expands to: *varfunc \\(fixedarg, *\\)" \
624 "gnu varargs expansion without an argument"
625
626 gdb_test "macro expand va2_gnu()" \
627 "expands to: *varfunc \\(fixedarg\\)" \
628 "gnu varargs expansion special splicing without an argument"
629
630 # Stringification tests.
631
632 gdb_test_no_output "macro define str(x) #x" \
633 "define stringification macro"
634
635 gdb_test_no_output "macro define maude 5" \
636 "define first stringification helper"
637
638 gdb_test_no_output "macro define xstr(x) str(x)" \
639 "define second stringification helper"
640
641 gdb_test "print str(5)" \
642 " = \"5\"" \
643 "simple stringify"
644
645 gdb_test "print str(hi bob)" \
646 " = \"hi bob\"" \
647 "stringify with one space"
648
649 gdb_test "print str( hi bob )" \
650 " = \"hi bob\"" \
651 "stringify with many spaces"
652
653 gdb_test "print str(hi \"bob\")" \
654 " = \"hi \\\\\"bob\\\\\"\"" \
655 "stringify with quotes"
656
657 gdb_test "print str(hi \\bob\\)" \
658 " = \"hi \\\\\\\\bob\\\\\\\\\"" \
659 "stringify with backslashes"
660
661 gdb_test "print str(maude)" \
662 " = \"maude\"" \
663 "stringify without substitution"
664
665 gdb_test "print xstr(maude)" \
666 " = \"5\"" \
667 "stringify with substitution"
668
669 # Regression test for pp-number bug.
670 gdb_test_no_output "macro define si_addr fields.fault.si_addr" \
671 "define si_addr macro"
672
673 gdb_test "macro expand siginfo.si_addr" \
674 "expands to: siginfo.fields.fault.si_addr" \
675 "macro expand siginfo.si_addr"
This page took 0.050705 seconds and 5 git commands to generate.