delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2015/02/03/14:52:37

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:reply-to:date:message-id:subject
:from:to:content-type; q=dns; s=default; b=DuDlxsaYq90wgeqzmrcpi
JT0ZDLss42dxPHhdb/T7HyvhOEu6LbHogMLZgL06C1tpne6tPCTqQjrsTYXJZPhC
Qfw2c9YkMP88BJoCWhTe4ASVuKrbjAPe7mDBijcx2tTsFHFieMA+hVT0mON3taqx
j/3x0i3XH0CIlnDHyeukls=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:reply-to:date:message-id:subject
:from:to:content-type; s=default; bh=xlp/8f10mdvi3KN150BacnlLUaA
=; b=eupNt3HOaoWoM5M7n0YC1NwUhm5wJA+oARI3iK9yqPygs+DQGUmulHHdoLa
5BPD9jJhmA+735KReO0ersjCWDqMW6BhC3Q9q8VnseVvUTBha4o+WrjkuJsD9NSh
gvJfsjyeuEUzL6hG1Gufur+NFktKJW4dpNGfoBhK8N2YpKKY=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2
X-HELO: mail-ie0-f180.google.com
MIME-Version: 1.0
X-Received: by 10.107.19.38 with SMTP id b38mr17922260ioj.35.1422993030647; Tue, 03 Feb 2015 11:50:30 -0800 (PST)
Reply-To: thomas DOT wuillemin AT gmail DOT com
Date: Tue, 3 Feb 2015 16:50:30 -0300
Message-ID: <CANro4aOM=uVAxmB_wi6cWzyKYcpxeYT58Bso8w+DQdCaom2gvg@mail.gmail.com>
Subject: Problem with vprintf () in Clang 3.4.2
From: Thomas Wuillemin <thomas DOT wuillemin AT gmail DOT com>
To: cygwin AT cygwin DOT com

Dear all,

While running some simple tests with the C vprintf function, I
detected different results between Gcc and Clang , where Clang seems
to be badly wrong.

Here is the faulty code that leads to a reproducible error (at least
in my configuration):

----------------------------------------------------
#include <stdio.h>
#include <stdarg.h>

void my_print1(char *format, ...)
{
    va_list arguments;

    va_start ( arguments, format );
    vprintf ( format, arguments );
    va_end ( arguments );
}

void my_print2(char *format, ...)
{
    va_list arguments;
    int value;

    va_start ( arguments, format );
    value = va_arg ( arguments, int );
    printf ( format, value );
    va_end ( arguments );
}

int main (int argc, char* argv[])
{
    (void) argc;
    (void) argv;

    my_print1 ( "Variadic argument found (should be 1): %d\n", 1 );
    my_print2 ( "Variadic argument found (should be 1): %d\n", 1 );
    return 0;
}
----------------------------------------------------

Compiled with gcc, the results are good:
$ gcc -Wall -Wextra -pedantic -g -O0 dummy.c -o dummy.exe
$ ./dummy.exe
Variadic argument found (should be 1): 1
Variadic argument found (should be 1): 1

Compiled with Clang, the results show a little issue:
$ clang -Wall -Wextra -pedantic -g -O0 dummy.c -o dummy.exe
$ ./dummy.exe
Variadic argument found (should be 1): 2271896
Variadic argument found (should be 1): 1

Working with char*, leads equally to various corruptions.

Is anyone already experienced such issue (or could confirm it) ?

Best regards,

Thomas

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019