gdb/testsuite: Fix py-format-string.exp on big-endian platforms
GDB's py-format-string test case depends on endianness. In particular it relies on the first byte of the machine representation of 42 (as an int) to be 42 as well. While this is indeed the case for little-endian machines, big-endian machines store a zero in the first byte instead. The wrong assumption leads to lots of FAILs on such architectures. Fix this by filling the affected union with bytes of the same value, such that endianness does not matter. Use the value 42, to keep the character in the first byte unchanged. gdb/testsuite/ChangeLog: * gdb.python/py-format-string.c (string.h): New include. (main): Fill a_struct_with_union.the_union.an_int with bytes of the same value, for endianness-independence. * gdb.python/py-format-string.exp (default_regexp_dict) (test_pretty_structs, test_format): Adjust expected output to the changed initialization.
This commit is contained in:
parent
37f6a7f456
commit
9ef62df072
|
@ -1,3 +1,12 @@
|
|||
2019-10-02 Andreas Arnez <arnez@linux.ibm.com>
|
||||
|
||||
* gdb.python/py-format-string.c (string.h): New include.
|
||||
(main): Fill a_struct_with_union.the_union.an_int with bytes of
|
||||
the same value, for endianness-independence.
|
||||
* gdb.python/py-format-string.exp (default_regexp_dict)
|
||||
(test_pretty_structs, test_format): Adjust expected output to the
|
||||
changed initialization.
|
||||
|
||||
2019-10-02 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* gdb.ada/catch_ex_std.exp: Add $_ada_exception test.
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <string.h>
|
||||
|
||||
typedef struct point
|
||||
{
|
||||
int x;
|
||||
|
@ -84,7 +86,9 @@ main ()
|
|||
struct point another_point = { 123, 456 };
|
||||
|
||||
struct_union_t a_struct_with_union;
|
||||
a_struct_with_union.the_union.an_int = 42;
|
||||
/* Fill the union in an endianness-independent way. */
|
||||
memset (&a_struct_with_union.the_union, 42,
|
||||
sizeof (a_struct_with_union.the_union));
|
||||
|
||||
enum_t an_enum = ENUM_BAR;
|
||||
|
||||
|
|
|
@ -124,7 +124,7 @@ set default_regexp_dict [dict create \
|
|||
"a_point_t_pointer" $default_pointer_regexp \
|
||||
"a_point_t_ref" "Pretty Point \\(42, 12\\)" \
|
||||
"another_point" "Pretty Point \\(123, 456\\)" \
|
||||
"a_struct_with_union" "\\{the_union = \\{an_int = 42, a_char = 42 '\\*'\\}\\}" \
|
||||
"a_struct_with_union" "\\{the_union = \\{an_int = 707406378, a_char = 42 '\\*'\\}\\}" \
|
||||
"an_enum" "ENUM_BAR" \
|
||||
"a_string" "${default_pointer_regexp} \"hello world\"" \
|
||||
"a_binary_string" "${default_pointer_regexp} \"hello\"" \
|
||||
|
@ -333,7 +333,7 @@ proc test_pretty_structs {} {
|
|||
global current_lang
|
||||
|
||||
set a_struct_with_union_pretty \
|
||||
"\\{\[\r\n\]+ the_union = \\{\[\r\n\]+ an_int = 42,\[\r\n\]+ a_char = 42 '\\*'\[\r\n\]+ \\}\[\r\n\]+\\}"
|
||||
"\\{\[\r\n\]+ the_union = \\{\[\r\n\]+ an_int = 707406378,\[\r\n\]+ a_char = 42 '\\*'\[\r\n\]+ \\}\[\r\n\]+\\}"
|
||||
|
||||
check_var_with_bool_opt "pretty_structs" "a_point_t"
|
||||
check_var_with_bool_opt "pretty_structs" "a_point_t_pointer"
|
||||
|
@ -814,7 +814,7 @@ proc test_format {} {
|
|||
check_format_string "a_point_t_pointer" $opts
|
||||
check_format_string "another_point" $opts
|
||||
check_format_string "a_struct_with_union" $opts \
|
||||
"\\{the_union = \\{an_int = 0x2a, a_char = 0x2a\\}\\}"
|
||||
"\\{the_union = \\{an_int = 0x2a2a2a2a, a_char = 0x2a\\}\\}"
|
||||
check_format_string "an_enum" $opts \
|
||||
"0x1"
|
||||
check_format_string "a_string" $opts \
|
||||
|
@ -851,7 +851,7 @@ proc test_format {} {
|
|||
$decimal_pointer_regexp
|
||||
check_format_string "another_point" $opts
|
||||
check_format_string "a_struct_with_union" $opts \
|
||||
"\\{the_union = \\{an_int = 42, a_char = 42\\}\\}"
|
||||
"\\{the_union = \\{an_int = 707406378, a_char = 42\\}\\}"
|
||||
check_format_string "an_enum" $opts \
|
||||
"1"
|
||||
check_format_string "a_string" $opts \
|
||||
|
|
Loading…
Reference in New Issue