Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Dec 2002 19:24:11 +0100 (CET)
From:      Stefan Farfeleder <stefan@fafoe.dyndns.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        stefan@fafoe.dyndns.org
Subject:   i386/46406: [PATCH] __aligned macro for the Intel C compiler
Message-ID:  <20021220182411.35D0A866@frog.fafoe>

next in thread | raw e-mail | index | archive | help

>Number:         46406
>Category:       i386
>Synopsis:       [PATCH] __aligned macro for the Intel C compiler
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Dec 20 10:30:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Stefan Farfeleder
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD frog.fafoe 5.0-CURRENT FreeBSD 5.0-CURRENT #8: Fri Dec 20 01:53:06 CET 2002 freebsd@frog.fafoe:/freebsd/current/obj/freebsd/current/src/sys/FROG i386


	
>Description:
In the below commit __aligned was added to <machine/signal.h> on i386.  This
causes the Intel C compiler (lang/icc) to abort when the header is processed.

	
>How-To-Repeat:
Script started on Fri Dec 20 19:05:00 2002
$ cat test.c
#include <signal.h>
int main(void) { return 0; }
$ icc test.c
test.c
/usr/include/machine/signal.h(130): error: expected a ";"
  	int	sc_fpstate[128] __aligned(16);
  	   	                ^

compilation aborted for test.c (code 2)
$ ^D
Script done on Fri Dec 20 19:05:07 2002
	
>Fix:
Here is a simple implementation of __aligned:

--- cdefs.s.diff begins here ---
Index: src/sys/sys/cdefs.h
===================================================================
RCS file: /usr/home/ncvs/src/sys/sys/cdefs.h,v
retrieving revision 1.68
diff -c -c -r1.68 cdefs.h
*** src/sys/sys/cdefs.h	21 Oct 2002 20:50:30 -0000	1.68
--- src/sys/sys/cdefs.h	20 Dec 2002 17:45:26 -0000
***************
*** 141,146 ****
--- 141,149 ----
  #define	__aligned(x)	__attribute__((__aligned__(x)))
  #define	__section(x)	__attribute__((__section__(x)))
  #endif
+ #ifdef __ICC
+ #define	__aligned(x)	__declspec(align(x))
+ #endif
  #endif
  
  /* XXX: should use `#if __STDC_VERSION__ < 199901'. */
--- cdefs.s.diff ends here ---

--- commit_msg begins here ---
deischen    2002/12/02 11:58:55 PST

  Modified files:
    sys/i386/i386        genassym.c locore.s machdep.c 
    sys/i386/include     signal.h ucontext.h 
  Log:
  Align the FPU state in the ucontext and sigcontext to 16 bytes
  to accomodate the new SSE/XMM floating point save/restore
  instructions.
  
  This commit is mostly from bde and includes some style nits.
  
  Approved by:    re (jhb)
  
  Revision  Changes    Path
  1.132     +3 -0      src/sys/i386/i386/genassym.c
  1.161     +14 -10    src/sys/i386/i386/locore.s
  1.551     +6 -3      src/sys/i386/i386/machdep.c
  1.20      +2 -2      src/sys/i386/include/signal.h
  1.10      +6 -4      src/sys/i386/include/ucontext.h
--- commit_msg ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021220182411.35D0A866>