diff options
author | Andrew Cagney <cagney@redhat.com> | 2003-09-19 16:22:39 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2003-09-19 16:22:39 +0000 |
commit | 5b03f2662bf6d0e139ee4fbd089723a2e1b3deee (patch) | |
tree | 63386ca80e67a51370f3a6dc04673d74b8e27e13 /gdb/defs.h | |
parent | 9f6c1c4b8b74fd670fc2af651dd5df989e109779 (diff) | |
download | gdb-5b03f2662bf6d0e139ee4fbd089723a2e1b3deee.zip gdb-5b03f2662bf6d0e139ee4fbd089723a2e1b3deee.tar.gz gdb-5b03f2662bf6d0e139ee4fbd089723a2e1b3deee.tar.bz2 |
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.
Diffstat (limited to 'gdb/defs.h')
-rw-r--r-- | gdb/defs.h | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -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 */ |