Handle CRLF when reading XML on Windows

xml-support.c uses FOPEN_RT, but then reads the entire contents of the
file and verifies that the number of bytes read matches the length.
This can fail on Windows, where the read will translate line
terminators.

This patch fixes the bug by changing xml-support.c to use FOPEN_RB.
This works because expat correctly handles \r\n line terminators.

gdb/ChangeLog
2019-12-11  Tom Tromey  <tromey@adacore.com>

	* xml-support.c (xml_fetch_content_from_file): Use FOPEN_RB.

gdb/testsuite/ChangeLog
2019-12-11  Tom Tromey  <tromey@adacore.com>

	* gdb.xml/tdesc-arch.exp (set_arch): Add "trans_mode" parameter.
	Add crlf test.

Change-Id: I548438f33eed284dde1de8babf755eaa1a40319d
This commit is contained in:
Tom Tromey 2019-12-10 11:44:36 -07:00
parent 228c8f4be0
commit f69656d00f
4 changed files with 22 additions and 5 deletions

View file

@ -977,11 +977,11 @@ xml_fetch_content_from_file (const char *filename, void *baton)
{
char *fullname = concat (dirname, "/", filename, (char *) NULL);
file = gdb_fopen_cloexec (fullname, FOPEN_RT);
file = gdb_fopen_cloexec (fullname, FOPEN_RB);
xfree (fullname);
}
else
file = gdb_fopen_cloexec (filename, FOPEN_RT);
file = gdb_fopen_cloexec (filename, FOPEN_RB);
if (file == NULL)
return {};