Fix spurious FAILs with examine-backward.exp

Message ID m3wpbjc1l5.fsf@oc1027705133.ibm.com
State New, archived
Headers

Commit Message

Andreas Arnez March 20, 2017, 5:14 p.m. UTC
  The test case examine-backward.exp issues the command "x/-s" after the end
of the first string in TestStrings, but without making sure that this
string is preceded by a string terminator.  Thus GDB may spuriously print
some random characters from before that string, and then the test fails.

This patch assures that TestStrings is preceded by a string terminator.

gdb/testsuite/ChangeLog:

	* gdb.base/examine-backward.c (Barrier): New character array
	constant, to ensure that TestStrings is preceded by a string
	terminator.
---
 gdb/testsuite/gdb.base/examine-backward.c | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Pedro Alves March 20, 2017, 5:34 p.m. UTC | #1
On 03/20/2017 05:14 PM, Andreas Arnez wrote:
> The test case examine-backward.exp issues the command "x/-s" after the end
> of the first string in TestStrings, but without making sure that this
> string is preceded by a string terminator.  Thus GDB may spuriously print
> some random characters from before that string, and then the test fails.
> 
> This patch assures that TestStrings is preceded by a string terminator.
> 

Agreed.  Looks like I forgot to follow through with:

 https://sourceware.org/ml/gdb-patches/2016-08/msg00127.html

>  
> +const char Barrier[] = {
> +  0x00,
> +};
> +

OK with a comment.  Feel free to steal mine from that url.

>  const char TestStrings[] = {
>    0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
>    0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
> 

Thanks,
Pedro Alves
  
Andreas Arnez March 20, 2017, 5:57 p.m. UTC | #2
On Mon, Mar 20 2017, Pedro Alves wrote:

> On 03/20/2017 05:14 PM, Andreas Arnez wrote:
>> The test case examine-backward.exp issues the command "x/-s" after the end
>> of the first string in TestStrings, but without making sure that this
>> string is preceded by a string terminator.  Thus GDB may spuriously print
>> some random characters from before that string, and then the test fails.
>> 
>> This patch assures that TestStrings is preceded by a string terminator.
>> 
>
> Agreed.  Looks like I forgot to follow through with:
>
>  https://sourceware.org/ml/gdb-patches/2016-08/msg00127.html

Heh, and you even expressed exactly the same thought I had about this:

  "It's not strictly correct to assume that the linker places the
  objects consecutively, but it's probably safe in practice."

>
>>  
>> +const char Barrier[] = {
>> +  0x00,
>> +};
>> +
>
> OK with a comment.  Feel free to steal mine from that url.

Sure  :-)

Pushed with that change.

Thanks,
Andreas
  

Patch

diff --git a/gdb/testsuite/gdb.base/examine-backward.c b/gdb/testsuite/gdb.base/examine-backward.c
index 5e9162a..ab04eff 100644
--- a/gdb/testsuite/gdb.base/examine-backward.c
+++ b/gdb/testsuite/gdb.base/examine-backward.c
@@ -32,6 +32,10 @@  literals.  The content of each array is the same as followings:
   };
 */
 
+const char Barrier[] = {
+  0x00,
+};
+
 const char TestStrings[] = {
   0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
   0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,