|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XTF 2/4] lib: always append CR after LF in vsnprintf()
> On 16. Apr 2020, at 12:18, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote:
>
> CAUTION: This email originated from outside of the organization. Do not click
> links or open attachments unless you can confirm the sender and know the
> content is safe.
>
>
>
> On 16/04/2020 10:41, Pawel Wieczorkiewicz wrote:
>> The explicit LFCR sequence guarantees proper line by line formatting
>> in the output.
>> The '\n' character alone on some terminals is not automatically
>> converted to LFCR.
>>
>> Signed-off-by: Pawel Wieczorkiewicz <wipawel@xxxxxxxxx>
>
> Up until now, all console destinations have expected POSIX text semantics.
>
> I presume this is due to the COM1 use presented in the next patch?
>
No, this is not about that.
> Unfortunately, this comes with collateral damage.
>
> # ./xtf-runner hvm64 example
> Executing 'xl create -p tests/example/test-hvm64-example.cfg'
> Executing 'xl console test-hvm64-example'
> Executing 'xl unpause test-hvm64-example'
> --- Xen Test Framework ---
>
> Found Xen: 4.14
>
> Environment: HVM 64bit (Long mode 4 levels)
>
> Hello World
>
> Test result: SUCCESS
>
>
> Combined test results:
> test-hvm64-example CRASH
>
I never use xtf-runner script to execute tests. I do it the old fashion way:
# xl create -c test-hvm64-example.cfg
Parsing config from test-hvm64-example.cfg
Guest cpuid information
Native cpuid:
00000000:ffffffff ->
0000000d:756e6547:6c65746e:49656e69
00000001:ffffffff -> 000306e4:00400800:f7ba2203:1fcbfbff
00000002:ffffffff -> 76036301:00f0b2ff:00000000:00ca0000
00000003:ffffffff -> 00000000:00000000:00000000:00000000
00000004:00000000 ->
7c000121:01c0003f:0000003f:00000000
00000004:00000001 ->
7c000122:01c0003f:0000003f:00000000
00000004:00000002 -> 7c000143:01c0003f:000001ff:00000000
00000004:00000003 -> 7c000163:04c0003f:00004fff:00000006
00000004:00000004 -> 00000000:00000000:00000000:00000000
00000005:ffffffff ->
00000040:00000040:00000003:00001120
00000006:ffffffff ->
00000077:00000002:00000009:00000000
00000007:00000000 -> 00000000:00000281:00000000:9c000400
00000008:ffffffff -> 00000000:00000000:00000000:00000000
00000009:ffffffff -> 00000000:00000000:00000000:00000000
0000000a:ffffffff
-> 07300403:00000000:00000000:00000603
0000000b:ffffffff ->
00000000:00000000:00000000:00000000
0000000c:ffffffff -> 00000000:00000000:00000000:00000000
0000000d:00000000 -> 00000007:00000240:00000340:00000000
0000000d:00000001 -> 00000001:00000000:00000000:00000000
0000000d:00000002
-> 00000100:00000240:00000000:00000000
40000000:ffffffff ->
40000005:566e6558:65584d4d:4d4d566e
40000001:ffffffff -> 0004000b:00000000:00000000:00000000
40000002:ffffffff -> 00000001:40000000:00000000:00000000
40000003:00000000 -> 00000006:00000000:002625a2:00000001
40000003:00000001
-> 57b3c4d2:00030755:ccccc210:ffffffff
40000003:00000002 ->
002625a2:00000000:00000000:00000000
40000004:00000000 -> 0000001c:00000000:00000ac9:00000000
40000005:ffffffff -> 00000000:00000000:00000000:00000000
40000100:ffffffff -> 00000000:00000000:00000000:00000000
80000000:ffffffff -> 80000008:00000000:00000000:00000000
80000001:ffffffff ->
00000000:00000000:00000001:2c100800
80000002:ffffffff -> 20202020:6e492020:286c6574:58202952
80000003:ffffffff -> 286e6f65:43202952:45205550:36322d35
80000004:ffffffff -> 76203037:20402032:30352e32:007a4847
80000005:ffffffff -> 00000000:00000000:00000000:00000000
80000006:ffffffff ->
00000000:00000000:01006040:00000000
80000007:ffffffff -> 00000000:00000000:00000000:00000000
80000008:ffffffff -> 0000302e:00001000:00000000:00000000
Test result: SUCCESS
There is no \r added to the console. I am not using serial console for this
example.
Also, qemu seems to do the right thing and appends \r when it is not there.
> which I believe is due to xenconsoled (or the intervening pty) also
> expanding \n to \r\n (and "Test result:" no longer being on the final
> line from xtf-runner's point of view). Xen also expands \n to \r\n for
> the console, so ends up emitting \r\r\n.
>
> Would it be better to have the com1 console handler do the expansion
> locally, to avoid interfering with the semantics of every other
> destination? That said...
com1 handler works fine even without this patch
>
>> ---
>> common/libc/vsnprintf.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/common/libc/vsnprintf.c b/common/libc/vsnprintf.c
>> index a49fd30..3202137 100644
>> --- a/common/libc/vsnprintf.c
>> +++ b/common/libc/vsnprintf.c
>> @@ -285,6 +285,16 @@ int vsnprintf(char *buf, size_t size, const char *fmt,
>> va_list args)
>> if ( *fmt != '%' )
>> {
>> PUT(*fmt);
>> +
>> + /*
>> + * The '\n' character alone on some terminals is not
>> automatically
>> + * converted to LFCR.
>> + * The explicit LFCR sequence guarantees proper line by line
>> + * formatting in the output.
>> + */
>> + if ( *fmt == '\n' && str < end )
>> + PUT('\r');
>
> ... doesn't this end up putting out \n\r ?
yes, it does
>
> ~Andrew
>
>> +
>> continue;
>> }
>>
>
Best Regards,
Pawel Wieczorkiewicz
wipawel@xxxxxxxxxx
Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |