* app.c (do_scrub_chars): Do not UNGET an EOF value.
* ti.h (GET_SCNHDR_NLNNO): Provide an alternative version of this macro which does not trigger an array bounds warning in gcc. (PUT_SCNHDR_NLNNO): Likewise. (GET_SCNHDR_FLAGS): Likewise. (PUT_SCNHDR_FLAGS): Likewise. (GET_SCNHDR_PAGE): Likewise. (PUT_SCNHDR_PAGE): Likewise.
This commit is contained in:
parent
7ba4aab9b6
commit
4055a11236
@ -1,3 +1,13 @@
|
||||
2008-06-17 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* ti.h (GET_SCNHDR_NLNNO): Provide an alternative version of this
|
||||
macro which does not trigger an array bounds warning in gcc.
|
||||
(PUT_SCNHDR_NLNNO): Likewise.
|
||||
(GET_SCNHDR_FLAGS): Likewise.
|
||||
(PUT_SCNHDR_FLAGS): Likewise.
|
||||
(GET_SCNHDR_PAGE): Likewise.
|
||||
(PUT_SCNHDR_PAGE): Likewise.
|
||||
|
||||
2007-11-05 Danny Smith <dannysmith@users.sourceforge.net>
|
||||
|
||||
* pe.h (COFF_ENCODE_ALIGNMENT) Define.
|
||||
|
@ -2,7 +2,7 @@
|
||||
customized in a target-specific file, and then this file included (see
|
||||
tic54x.h for an example).
|
||||
|
||||
Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
Copyright 2000, 2001, 2002, 2003, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -213,12 +213,81 @@ struct external_scnhdr {
|
||||
|
||||
/* COFF2 changes the offsets and sizes of these fields
|
||||
Assume we're dealing with the COFF2 scnhdr structure, and adjust
|
||||
accordingly
|
||||
*/
|
||||
accordingly. Note: The GNU C versions of some of these macros
|
||||
are necessary in order to avoid compile time warnings triggered
|
||||
gcc's array bounds checking. The PUT_SCNHDR_PAGE macro also has
|
||||
the advantage on not evaluating LOC twice. */
|
||||
|
||||
#define GET_SCNHDR_NRELOC(ABFD, LOC) \
|
||||
(COFF2_P (ABFD) ? H_GET_32 (ABFD, LOC) : H_GET_16 (ABFD, LOC))
|
||||
#define PUT_SCNHDR_NRELOC(ABFD, VAL, LOC) \
|
||||
(COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, LOC) : H_PUT_16 (ABFD, VAL, LOC))
|
||||
#ifdef __GNUC__
|
||||
#define GET_SCNHDR_NLNNO(ABFD, LOC) \
|
||||
({ \
|
||||
int nlnno; \
|
||||
char * ptr = (LOC); \
|
||||
if (COFF2_P (ABFD)) \
|
||||
nlnno = H_GET_32 (ABFD, ptr); \
|
||||
else \
|
||||
nlnno = H_GET_16 (ABFD, ptr - 2); \
|
||||
nlnno; \
|
||||
})
|
||||
#define PUT_SCNHDR_NLNNO(ABFD, VAL, LOC) \
|
||||
do \
|
||||
{ \
|
||||
char * ptr = (LOC); \
|
||||
if (COFF2_P (ABFD)) \
|
||||
H_PUT_32 (ABFD, VAL, ptr); \
|
||||
else \
|
||||
H_PUT_16 (ABFD, VAL, ptr - 2); \
|
||||
} \
|
||||
while (0)
|
||||
#define GET_SCNHDR_FLAGS(ABFD, LOC) \
|
||||
({ \
|
||||
int flags; \
|
||||
char * ptr = (LOC); \
|
||||
if (COFF2_P (ABFD)) \
|
||||
flags = H_GET_32 (ABFD, ptr); \
|
||||
else \
|
||||
flags = H_GET_16 (ABFD, ptr - 4); \
|
||||
flags; \
|
||||
})
|
||||
#define PUT_SCNHDR_FLAGS(ABFD, VAL, LOC) \
|
||||
do \
|
||||
{ \
|
||||
char * ptr = (LOC); \
|
||||
if (COFF2_P (ABFD)) \
|
||||
H_PUT_32 (ABFD, VAL, ptr); \
|
||||
else \
|
||||
H_PUT_16 (ABFD, VAL, ptr - 4); \
|
||||
} \
|
||||
while (0)
|
||||
#define GET_SCNHDR_PAGE(ABFD, LOC) \
|
||||
({ \
|
||||
unsigned page; \
|
||||
char * ptr = (LOC); \
|
||||
if (COFF2_P (ABFD)) \
|
||||
page = H_GET_16 (ABFD, ptr); \
|
||||
else \
|
||||
page = (unsigned) H_GET_8 (ABFD, ptr - 7); \
|
||||
page; \
|
||||
})
|
||||
/* On output, make sure that the "reserved" field is zero. */
|
||||
#define PUT_SCNHDR_PAGE(ABFD, VAL, LOC) \
|
||||
do \
|
||||
{ \
|
||||
char * ptr = (LOC); \
|
||||
if (COFF2_P (ABFD)) \
|
||||
H_PUT_16 (ABFD, VAL, ptr); \
|
||||
else \
|
||||
{ \
|
||||
H_PUT_8 (ABFD, VAL, ptr - 7); \
|
||||
H_PUT_8 (ABFD, 0, ptr - 8); \
|
||||
} \
|
||||
} \
|
||||
while (0)
|
||||
#else
|
||||
#define GET_SCNHDR_NLNNO(ABFD, LOC) \
|
||||
(COFF2_P (ABFD) ? H_GET_32 (ABFD, LOC) : H_GET_16 (ABFD, (LOC) - 2))
|
||||
#define PUT_SCNHDR_NLNNO(ABFD, VAL, LOC) \
|
||||
@ -229,11 +298,13 @@ struct external_scnhdr {
|
||||
(COFF2_P (ABFD) ? H_PUT_32 (ABFD, VAL, LOC) : H_PUT_16 (ABFD, VAL, (LOC) - 4))
|
||||
#define GET_SCNHDR_PAGE(ABFD, LOC) \
|
||||
(COFF2_P (ABFD) ? H_GET_16 (ABFD, LOC) : (unsigned) H_GET_8 (ABFD, (LOC) - 7))
|
||||
/* on output, make sure that the "reserved" field is zero */
|
||||
/* On output, make sure that the "reserved" field is zero. */
|
||||
#define PUT_SCNHDR_PAGE(ABFD, VAL, LOC) \
|
||||
(COFF2_P (ABFD) \
|
||||
? H_PUT_16 (ABFD, VAL, LOC) \
|
||||
: H_PUT_8 (ABFD, VAL, (LOC) - 7), H_PUT_8 (ABFD, 0, (LOC) - 8))
|
||||
#endif
|
||||
|
||||
|
||||
/* TI COFF stores section size as number of bytes (address units, not octets),
|
||||
so adjust to be number of octets, which is what BFD expects */
|
||||
|
Loading…
Reference in New Issue
Block a user