Bring back following change which was undone in previous commit:

------------------------------------------------------------------------
    r172854 | marius | 2007-10-21 10:03:18 -0700 (Sun, 21 Oct 2007) | 16 lines
    Changed paths:
       M /head/lib/libstand/tftp.c

    - Given that we tell the compiler that struct ip is packed and 32-bit
      aligned, GCC 4.2.1 also generates code for sendudp() that assumes
      this alignment. GCC 4.2.1 however doesn't 32-bit align wbuf, causing
      the loader to crash due to an unaligned access of wbuf in sendudp()
      when netbooting sparc64. Solve this by specifying wbuf as packed and
      32-bit aligned, too. As for lastdata and readudp() this currently is
      no issue when compiled with GCC 4.2.1, though give lastdata the same
      treatment as wbuf for consistency and possibility of being affected
      in the future. [1]
    - Sprinkle const on a lookup table.
    ------------------------------------------------------------------------
This commit is contained in:
Craig Rodrigues 2011-06-15 23:22:35 +00:00
parent 43a3cc7796
commit 32ecdb308f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=223128

View File

@ -118,10 +118,10 @@ struct tftp_handle {
u_char header[HEADER_SIZE];
struct tftphdr t;
u_char space[TFTP_MAX_BLKSIZE];
} lastdata;
} __packed __aligned(4) lastdata;
};
static int tftperrors[8] = {
static const int tftperrors[8] = {
0, /* ??? */
ENOENT,
EPERM,
@ -208,7 +208,7 @@ tftp_makereq(struct tftp_handle *h)
u_char header[HEADER_SIZE];
struct tftphdr t;
u_char space[FNAME_SIZE + 6];
} wbuf;
} __packed __aligned(4) wbuf;
char *wtail;
int l;
ssize_t res;
@ -286,7 +286,7 @@ tftp_getnextblock(struct tftp_handle *h)
struct {
u_char header[HEADER_SIZE];
struct tftphdr t;
} wbuf;
} __packed __aligned(4) wbuf;
char *wtail;
int res;
struct tftphdr *t;