[PATCH] Add system test before "set remote system-call-allowed 1"

Hui Zhu hui_zhu@mentor.com
Sun Jun 8 10:06:00 GMT 2014


On 06/05/14 00:29, Pedro Alves wrote:
> On 06/04/2014 07:44 AM, Hui Zhu wrote:
>> On 05/29/14 19:12, Pedro Alves wrote:
>>> On 05/13/2014 04:27 AM, Hui Zhu wrote:
>>>> This patch is update version according to the discussion in
>>>> https://www.sourceware.org/ml/gdb-patches/2009-11/msg00090.html.
>>>> If test get the target doesn't support fileio system according to the
>>>> remote log.   It will set this test as "unsupported".
>>>>
>>>> Before I made this patch, I want add a check before all of tests in this
>>>> file.  But I found that the target maybe support one call but not others.
>>>> For example: my target support Fwrite, Fopen and so on.  But not
>>>> Fgettimeofday.
>>>> And it doesn't support Fsystem NULL but it support Fsystem not NULL.
>>>
>>> So IIUC, the test will still have system (NULL) FAIL on your
>>> target, right?
>>
>> It will use fileio if argument of Fsystem is not NULL.
>> But will not use fileio if its argument is NULL.
>
> I mean, you still get one FAIL when you run the test
> against your target, even with your patch applied.

No.  It will not because the fail just happen when the target use remote 
file io to handle this system call.

>
> Otherwise, I think I'm missing something.
>
> Hmm, looking again at the patch, I'm pretty much confused.  :-/
>
> gdb_test continue \
> -"Continuing\\..*system 1:.*OK$stop_msg" \
> -"System says shell is available"
> +gdb_test_no_output "set debug remote 1"
> +set msg "System says shell is not available"
> +gdb_test_multiple "continue" $msg {
> +    -re "Continuing\\..*Fsystem.*system 1:.*OK$stop_msg\r\n$gdb_prompt $" {
>                           ^^^^^^^
>
> What's this "Fsystem" supposed to be matching here?  At this point
> "set remote system-call-allowed 1" has NOT been issued yet, so
> how come we expect to see that?

I am so sorry that I didn't explain this patch very clear.
The test before "set remote system-call-allowed 1" is to test the 
function that introduced in 
https://sourceware.org/gdb/current/onlinedocs/gdb/system.html "Due to 
security concerns, the system call is by default refused by GDB. The 
user has to allow this call explicitly with the set remote 
system-call-allowed 1 command."

So 3 part of this test is for:

gdb_test_no_output "set debug remote 1"
# Open the switch to check if this target use file io to handle this 
system or not.

set msg "System says shell is not available"
gdb_test_multiple "continue" $msg {
     -re "Continuing\\..*Fsystem.*system 1:.*OK$stop_msg\r\n$gdb_prompt $" {
	pass $msg
     }

Target uses file io handle system and it gets OK.
Then the test pass.

     -re ".*Fsystem.*$gdb_prompt $" {
	fail $msg
     }

Target uses file io handle system and it doesn't OK.
Then the test fail.

     -re "$gdb_prompt $" {
	unsupported $msg
     }

Target doesn't use file io.  The test is not support.

}

Thanks,
Hui

>
> +       pass $msg
> +    }
> +    -re ".*Fsystem.*$gdb_prompt $" {
> +       fail $msg
> +    }
> +    -re "$gdb_prompt $" {
> +       unsupported $msg
> +    }
> +}
> +gdb_test_no_output "set debug remote 0"
>



More information about the Gdb-patches mailing list