Hi,
I got an interesting report today from a customer having problems
with building LinuxBIOS and the payload with different compilers
The problem is that different compilers handle structure alignment
differently, ie 2.95.x and 3.x have fundamental differences here:
Adding __attribute__ ((packed)) to the structures helps:
struct lb_memory_range {
uint64_t start;
uint64_t size;
uint32_t type;
#define LB_MEM_RAM 1 /* Memory anyone can use */
#define LB_MEM_RESERVED 2 /* Don't use this memory region */
#define LB_MEM_TABLE 16 /* Ram configuration tables are kept in */
} __attribute__ ((packed));
struct lb_memory {
uint32_t tag;
uint32_t size;
struct lb_memory_range map[0];
} __attribute__ ((packed));
Since this is a table that is passed in memory, we do want it to be
exactly as it is defined, with no extra padding of any kind to make it
reliable information. So I consider adding __attribute__ ((packed))
a good solution for the problem.
If I get no good reasons against adding this, I will check it in later
Stefan
_______________________________________________
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios