[Bug libgomp/60670] New: omp.h may differ between multilibs
ro at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Mar 26 14:23:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60670
Bug ID: 60670
Summary: omp.h may differ between multilibs
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgomp
Assignee: unassigned at gcc dot gnu.org
Reporter: ro at gcc dot gnu.org
CC: jakub at gcc dot gnu.org
Host: *-*-solaris2.*, x86_64-unknown-linux-gnu
Target: *-*-solaris2.*, x86_64-unknown-linux-gnu
Build: *-*-solaris2.*, x86_64-unknown-linux-gnu
It has been noticed that the libgomp omp.h header that is generated at build
time
may differ between different multilibs. E.g.
* i386-pc-solaris2.11:
--- omp.h 2014-03-21 14:27:34.522529041 +0100
+++ ../amd64/libgomp/omp.h 2014-03-21 14:27:56.903263206 +0100
@@ -34,13 +34,13 @@
typedef struct
{
unsigned char _x[48]
- __attribute__((__aligned__(4)));
+ __attribute__((__aligned__(8)));
} omp_lock_t;
typedef struct
{
- unsigned char _x[56]
- __attribute__((__aligned__(4)));
+ unsigned char _x[64]
+ __attribute__((__aligned__(8)));
} omp_nest_lock_t;
#endif
* sparc-sun-solaris2.11:
--- omp.h 2014-03-21 15:26:13.738263000 +0100
+++ ../sparcv9/libgomp/omp.h 2014-03-21 15:26:49.743545700 +0100
@@ -39,7 +39,7 @@
typedef struct
{
- unsigned char _x[56]
+ unsigned char _x[64]
__attribute__((__aligned__(8)));
} omp_nest_lock_t;
#endif
* x86_64-unknown-linux-gnu:
--- omp.h 2014-03-21 19:02:19.351059178 +0100
+++ ../32/libgomp/omp.h 2014-03-21 19:02:30.432588699 +0100
@@ -39,8 +39,8 @@
typedef struct
{
- unsigned char _x[16]
- __attribute__((__aligned__(8)));
+ unsigned char _x[12]
+ __attribute__((__aligned__(4)));
} omp_nest_lock_t;
#endif
Unfortunately, only the version for the default multilib is installed. Given
that variables of those types can be allocated by user code and size and/or
alignment can differ between different multilibs, this can lead to all sorts
of errors when the allocations performed are smaller than what libgomp assumes.
It seems like different per-multilib headers need to be installed into separate
hierarchies to handle this.
Rainer
More information about the Gcc-bugs
mailing list