dnsd: fix unaligned access problem

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-04-26 14:25:33 +02:00
parent 3963d943f8
commit 6646de0214

View File

@ -44,10 +44,15 @@ struct dns_head {
uint16_t nauth; uint16_t nauth;
uint16_t nadd; uint16_t nadd;
}; };
/* Structure used to access type and class fields.
* They are totally unaligned, but gcc 4.3.4 thinks that pointer of type uint16_t*
* is 16-bit aligned and replaces 16-bit memcpy (in move_from_unaligned16 macro)
* with aligned halfword access on arm920t!
* Oh well. Slapping PACKED everywhere seems to help: */
struct type_and_class { struct type_and_class {
uint16_t type; uint16_t type PACKED;
uint16_t class; uint16_t class PACKED;
}; } PACKED;
/* element of known name, ip address and reversed ip address */ /* element of known name, ip address and reversed ip address */
struct dns_entry { struct dns_entry {
struct dns_entry *next; struct dns_entry *next;