small patch for pcc

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

small patch for pcc

Gerardo Santana Gómez Garrido
* Fixes a segmentation fault
* some minor logic fixes

--
Gerardo Santana

[demime 1.01d removed an attachment of type application/octet-stream which had a name of cc_c.diff]

Reply | Threaded
Open this post in threaded view
|

Re: small patch for pcc

Gerardo Santana Gómez Garrido
Thank you guys for the messages. I'm resending the patch inline.

I have already sent it to todd@, but still; I may get comments faster this
way.

2007/9/19, Gerardo Santana Gsmez Garrido <[hidden email]>:
> * Fixes a segmentation fault
> * some minor logic fixes

Index: cc.c
===================================================================
RCS file: /cvs/src/usr.bin/pcc/cc/cc/cc.c,v
retrieving revision 1.10
diff -u -r1.10 cc.c
--- cc.c        2007/09/19 21:42:06     1.10
+++ cc.c        2007/09/20 04:29:34
@@ -166,6 +166,8 @@
                        break;

                case 'b':
+                       if (i == argc - 1)
+                               errorx(1, "-b needs an argument");
                        if (strncmp(argv[i+1], "?", 1) == 0) {
                                /* show machine targets */
                                printf("Available machine targets:");
@@ -175,8 +177,10 @@
                                exit(0);
                        }
                        for (j=0; cppmds[j].mach; j++)
-                               if (strcmp(argv[i+1],cppmds[j].mach) == 0)
+                               if (strcmp(argv[i+1],cppmds[j].mach) == 0) {
                                        mach = cppmds[j].mach;
+                                       break;
+                               }
                        break;

                case 'X':
@@ -198,7 +202,7 @@
                case 'f': /* GCC compatibility flags */
                        if (strcmp(argv[i], "-fPIC") == 0)
                                kflag = F_PIC;
-                       if (strcmp(argv[i], "-fpic") == 0)
+                       else if (strcmp(argv[i], "-fpic") == 0)
                                kflag = F_pic;
                        /* silently ignore the rest */
                        break;
@@ -225,7 +229,7 @@
                case 'n': /* handle -n flags */
                        if (strcmp(argv[i], "-nostdinc") == 0)
                                nostdinc++;
-                       if (strcmp(argv[i], "-nostdlib") == 0) {
+                       else if (strcmp(argv[i], "-nostdlib") == 0) {
                                nostdlib++;
                                nostartfiles++;
                        } else if (strcmp(argv[i], "-nostartfiles") == 0)

Reply | Threaded
Open this post in threaded view
|

Re: small patch for pcc

Otto Moerbeek
On Thu, 20 Sep 2007, Gerardo Santana Gsmez Garrido wrote:

> Thank you guys for the messages. I'm resending the patch inline.
>
> I have already sent it to todd@, but still; I may get comments faster this
> way.

We have not forgotten about this. todd is just slacking on it.

        -Otto

>
> 2007/9/19, Gerardo Santana Gsmez Garrido <[hidden email]>:
> > * Fixes a segmentation fault
> > * some minor logic fixes
>
> Index: cc.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/pcc/cc/cc/cc.c,v
> retrieving revision 1.10
> diff -u -r1.10 cc.c
> --- cc.c        2007/09/19 21:42:06     1.10
> +++ cc.c        2007/09/20 04:29:34
> @@ -166,6 +166,8 @@
>                         break;
>
>                 case 'b':
> +                       if (i == argc - 1)
> +                               errorx(1, "-b needs an argument");
>                         if (strncmp(argv[i+1], "?", 1) == 0) {
>                                 /* show machine targets */
>                                 printf("Available machine targets:");
> @@ -175,8 +177,10 @@
>                                 exit(0);
>                         }
>                         for (j=0; cppmds[j].mach; j++)
> -                               if (strcmp(argv[i+1],cppmds[j].mach) == 0)
> +                               if (strcmp(argv[i+1],cppmds[j].mach) == 0)
{

>                                         mach = cppmds[j].mach;
> +                                       break;
> +                               }
>                         break;
>
>                 case 'X':
> @@ -198,7 +202,7 @@
>                 case 'f': /* GCC compatibility flags */
>                         if (strcmp(argv[i], "-fPIC") == 0)
>                                 kflag = F_PIC;
> -                       if (strcmp(argv[i], "-fpic") == 0)
> +                       else if (strcmp(argv[i], "-fpic") == 0)
>                                 kflag = F_pic;
>                         /* silently ignore the rest */
>                         break;
> @@ -225,7 +229,7 @@
>                 case 'n': /* handle -n flags */
>                         if (strcmp(argv[i], "-nostdinc") == 0)
>                                 nostdinc++;
> -                       if (strcmp(argv[i], "-nostdlib") == 0) {
> +                       else if (strcmp(argv[i], "-nostdlib") == 0) {
>                                 nostdlib++;
>                                 nostartfiles++;
>                         } else if (strcmp(argv[i], "-nostartfiles") == 0)