20000717 snapshot broken specs setup in gcc/config/i386/cygwi n.h
Billinghurst, David (CRTS)
David.Billinghurst@riotinto.com
Wed Jul 19 17:50:00 GMT 2000
That does it. Will bootstrap anyway.
> -----Original Message-----
> From: Zack Weinberg [SMTP:zack@wolery.cumb.org]
> Sent: Thursday, 20 July 2000 10:26
> To: Billinghurst, David (CRTS)
> Cc: gcc-bugs@gcc.gnu.org; gcc-patches@gcc.gnu.org
> Subject: Re: 20000717 snapshot broken specs setup in
> gcc/config/i386/cygwi n.h
>
> On Thu, Jul 20, 2000 at 12:01:06AM -0000, Billinghurst, David (CRTS)
> wrote:
> > Here is a little more detail on the -D__declspec(x)=__attribute(x) issue
> > with g77
> ....
> > /usr/local/obj/egcs-20000717/gcc/tradcpp.exe: malformed option `-D
> > __declspec(x) __attribute__((x))'
>
> This is due to excessive cleverness in the -D handler. Please try the
> appended patch.
>
> > PS. There is an outstanding tradcpp makefile patch
> > http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00693.html
>
> I thought I had applied that already. Sorry. I'll need to test it
> but it should go in sometime this evening.
>
> zw
>
> * tradcpp.c (main): Do not munge -D options.
> (make_definition): Handle -Dfoo(x)=... correctly.
>
> ===================================================================
> Index: tradcpp.c
> --- tradcpp.c 2000/07/19 20:37:25 1.6
> +++ tradcpp.c 2000/07/20 00:23:39
> @@ -610,7 +610,7 @@ main (argc, argv)
>
> case 'D':
> {
> - char *p, *p1;
> + char *p;
>
> if (argv[i][2] != 0)
> p = argv[i] + 2;
> @@ -619,8 +619,6 @@ main (argc, argv)
> else
> p = argv[++i];
>
> - if ((p1 = (char *) strchr (p, '=')) != NULL)
> - *p1 = ' ';
> pend_defs[i] = p;
> }
> break;
> @@ -4667,52 +4665,26 @@ make_definition (str)
> FILE_BUF *ip;
> struct directive *kt;
> U_CHAR *buf, *p;
> + size_t len = strlen ((char *)str);
>
> - buf = str;
> - p = str;
> - while (is_idchar[*p]) p++;
> - if (p == str) {
> - error ("malformed option `-D %s'", str);
> - return;
> - }
> - if (*p == 0) {
> - buf = (U_CHAR *) alloca (p - buf + 4);
> - strcpy ((char *)buf, (char *)str);
> - strcat ((char *)buf, " 1");
> - } else if (*p != ' ') {
> - error ("malformed option `-D %s'", str);
> - return;
> + p = (U_CHAR *) strchr ((char *)str, '=');
> + if (p == NULL) {
> + /* Change -DFOO into #define FOO 1 */
> + buf = (U_CHAR *) alloca (len + 3);
> + memcpy (buf, str, len);
> + memcpy (buf + len, " 1", 3);
> + len += 2;
> } else {
> - U_CHAR *q;
> - /* Copy the entire option so we can modify it. */
> - buf = (U_CHAR *) alloca (2 * strlen ((char *)str) + 1);
> - strncpy ((char *)buf, (char *)str, p - str);
> - /* Change the = to a space. */
> + buf = (U_CHAR *) alloca (len + 1);
> + memcpy (buf, str, len + 1);
> buf[p - str] = ' ';
> - /* Scan for any backslash-newline and remove it. */
> - p++;
> - q = &buf[p - str];
> - while (*p) {
> - if (*p == '\\' && p[1] == '\n')
> - p += 2;
> - /* Change newline chars into newline-markers. */
> - else if (*p == '\n')
> - {
> - *q++ = '\n';
> - *q++ = '\n';
> - p++;
> - }
> - else
> - *q++ = *p++;
> - }
> - *q = 0;
> }
>
> ip = &instack[++indepth];
> ip->fname = "*Initialization*";
>
> ip->buf = ip->bufp = buf;
> - ip->length = strlen ((char *)buf);
> + ip->length = len;
> ip->lineno = 1;
> ip->macro = 0;
> ip->free_ptr = 0;
More information about the Gcc-bugs
mailing list