This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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] | |
Hi Ian,
This patch fixes the alignment problem reported by Markus. I
looked at declarations of Expression::eval_with_dot() and
Expression::eval_maybe_dot() in script.h. According to comments in
there, the location *RESULT_ALIGNMENT is written only if the existing
value there is smaller than the alignment of the expression. So I
think it is incorrect that Binary_<operator>::value() sets
*EEI->RESULT_ALIGNMENT_POINTER unconditionally. Furthermore, the old
code looks a little suspicious to me, why do we only use
right_alignment? Should the KEEP_LEFT case use left_alignment instead?
This is tested on x86_64-unknown-linux-gnu.
-Doug
2010-11-18 Doug Kwan <dougkwan@google.com>
* expression.cc (BINARY_EXPRESSION): Initalize left_alignment
and right_alignment to be zero. Store result alignment only if it is
greater than existing alignment.
Attachment:
patch-align.txt
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |