mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-28 10:00:51 +00:00
2003-09-19 Andrew Cagney <cagney@redhat.com>
* utils.c (align_up, align_down): New functions. * defs.h (align_up, align_down): Declare. * ppc-sysv-tdep.c (align_up, align_down): Delete functions. * s390-tdep.c: Replace "round_up" and "round_down" with "align_up" and "align_down". (round_up, round_down): Delete functions. * mips-tdep.c: Replace ROUND_UP and ROUND_DOWN with "align_up" and "align_down". (ROUND_DOWN, ROUND_UP): Delete macros. (mips_dump_tdep): Do not print "ROUND_UP" or "ROUND_DOWN". * h8300-tdep.c: Replace "round_up" and "round_down" with "align_up" and "align_down". (round_up, round_down): Delete macros. * frv-tdep.c: Replace ROUND_UP and ROUND_DOWN with "align_up" and "align_down". (ROUND_UP, ROUND_DOWN): Delete macros.
This commit is contained in:
32
gdb/defs.h
32
gdb/defs.h
@@ -1264,4 +1264,36 @@ extern int use_windows;
|
||||
#define ISATTY(FP) (isatty (fileno (FP)))
|
||||
#endif
|
||||
|
||||
/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
|
||||
power of 2). Round up/down when necessary. Examples of correct
|
||||
use include:
|
||||
|
||||
addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
|
||||
write_memory (addr, value, len);
|
||||
addr += len;
|
||||
|
||||
and:
|
||||
|
||||
sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
|
||||
write_memory (sp, value, len);
|
||||
|
||||
Note that uses such as:
|
||||
|
||||
write_memory (addr, value, len);
|
||||
addr += align_up (len, 8);
|
||||
|
||||
and:
|
||||
|
||||
sp -= align_up (len, 8);
|
||||
write_memory (sp, value, len);
|
||||
|
||||
are typically not correct as they don't ensure that the address (SP
|
||||
or ADDR) is correctly aligned (relying on previous alignment to
|
||||
keep things right). This is also why the methods are called
|
||||
"align_..." instead of "round_..." as the latter reads better with
|
||||
this incorrect coding style. */
|
||||
|
||||
extern ULONGEST align_up (ULONGEST v, int n);
|
||||
extern ULONGEST align_down (ULONGEST v, int n);
|
||||
|
||||
#endif /* #ifndef DEFS_H */
|
||||
|
||||
Reference in New Issue
Block a user