This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
- /* Loop backwards through arguments to determine stack alignment. */ - alignlen = 0; - - for (j = nargs - 1; j >= i; j--) - { - typelen = TYPE_LENGTH (value_enclosing_type (args[j])); - alignlen += (typelen + 3) & (~3); - } - - if (alignlen & 0x4) - stack_dest -= 4;Do you have any hint as to why this code was written the way it was? It doesn't seem like the type of code that would be added by accident. Did Jeff (the apparent author) misunderstand the ABI?
thanks, I change to align_up to reuse existing helper function
typelen = TYPE_LENGTH (value_enclosing_type (args[j])); - slacklen = ((typelen + 3) & (~3)) - typelen; + slacklen = ((typelen + 7) & (~7)) - typelen;This is a detail, but can you use utils.c:align_up, in this case? (I find those midly more readable than these incantations, but it's OK if you prefer the code to stay as is).
It looks like you need to adjust the comment as well./* Add 2 words for linkage space to the stack. */ - stack_dest = stack_dest - 8; - write_memory (stack_dest, two_zero_words, 8); + stack_dest = stack_dest - 16; + write_memory (stack_dest, four_zero_words, 16);
Attachment:
01-revise.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |