Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gcc warning line number mismatch #105

Open
neelabhg opened this issue Apr 29, 2015 · 3 comments
Open

gcc warning line number mismatch #105

neelabhg opened this issue Apr 29, 2015 · 3 comments
Labels

Comments

@neelabhg
Copy link
Member

When compiling the following program (from https://computing.llnl.gov/tutorials/pthreads/samples/hello.c):

/******************************************************************************
* FILE: hello.c
* DESCRIPTION:
*   A "hello world" Pthreads program.  Demonstrates thread creation and
*   termination.
* AUTHOR: Blaise Barney
* LAST REVISED: 08/09/11
******************************************************************************/
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 5

void *PrintHello(void *threadid)
{
   long tid;
   tid = (long)threadid;
   printf("Hello World! It's me, thread #%ld!\n", tid);
   pthread_exit(NULL);
}

int main(int argc, char *argv[])
{
   pthread_t threads[NUM_THREADS];
   int rc;
   long t;
   for(t=0;t<NUM_THREADS;t++){
     printf("In main: creating thread %ld\n", t);
     rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
     if (rc){
       printf("ERROR; return code from pthread_create() is %d\n", rc);
       exit(-1);
       }
     }

   /* Last thing that main() should do */
   pthread_exit(NULL);
}

gcc outputs this:

program.c: In function 'main':
program.c:43:15: warning: unused parameter 'argc' [-Wunused-parameter]
  int main(int argc, char *argv[])
               ^
program.c:43:27: warning: unused parameter 'argv' [-Wunused-parameter]
  int main(int argc, char *argv[])
                           ^

The last line of the program is line 38, but the warning appears on line 43.

Why? Even if this has to do with gcc, it still affects our user experience, and so I thought this needed to be brought to attention.

@wchill
Copy link
Contributor

wchill commented Apr 29, 2015

First I thought this was likely editor related. When I copy paste the above example into the editor, it gets transformed into this:

/******************************************************************************
 * * FILE: hello.c
 * * DESCRIPTION:
 * *   A "hello world" Pthreads program.  Demonstrates thread creation and
 * *   termination.
 * * AUTHOR: Blaise Barney
 * * LAST REVISED: 08/09/11
 * ******************************************************************************/
 #include <pthread.h>
 #include <stdio.h>
 #include <stdlib.h>
 #define NUM_THREADS 5

 void *PrintHello(void *threadid)
 {
     long tid;
     tid = (long)threadid;
     printf("Hello World! It's me, thread #%ld!\n", tid);
     pthread_exit(NULL);
 }

 int main(int argc, char *argv[])
 {
     pthread_t threads[NUM_THREADS];
     int rc;
     long t;
     for(t=0;t<NUM_THREADS;t++){
         printf("In main: creating thread %ld\n", t);
         rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
         if (rc){
             printf("ERROR; return code from pthread_create() is %d\n", rc);
             exit(-1);
         }
     }

     /* Last thing that main() should do */
     pthread_exit(NULL);
 }

Note the extra asterisks in the comments and the space at the beginning of each line.

I did try disabling "Autoindent code" in the editor options - it fixes the above issue but doesn't fix the issue with the compiler output.

However, if you open program.c in the VM, there's an extra blank line in between every line. And if you watch the code get transmitted to the VM during compilation, those blank lines are there also. So likely we need to inspect the module that handles this.

@neelabhg
Copy link
Member Author

Great catch. BTW, I opened issue #99 earlier for the comment block + auto indentation problem you mentioned.

@wchill
Copy link
Contributor

wchill commented Apr 29, 2015

If you compile the program without that comment block, it actually seems to work fine

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 5

void *PrintHello(void *threadid)
{
   long tid;
   tid = (long)threadid;
   printf("Hello World! It's me, thread #%ld!\n", tid);
   pthread_exit(NULL);
}

int main(int argc, char *argv[])
{
   pthread_t threads[NUM_THREADS];
   int rc;
   long t;
   for(t=0;t<NUM_THREADS;t++){
     printf("In main: creating thread %ld\n", t);
     rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
     if (rc){
       printf("ERROR; return code from pthread_create() is %d\n", rc);
       exit(-1);
       }
     }

   /* Last thing that main() should do */
   pthread_exit(NULL);
}
program.c: In function 'main':
program.c:27:14: warning: unused parameter 'argc' [-Wunused-parameter]
  int main(int argc, char *argv[])
               ^
program.c:27:26: warning: unused parameter 'argv' [-Wunused-parameter]
  int main(int argc, char *argv[])
                           ^

@neelabhg neelabhg added the bug label Nov 6, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants