mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-04 02:02:22 +00:00
Make ALIGN(x) behave as ALIGN(.,x)
Inside output sections, ALIGN(.,x) uses a section-relative value for dot. The unary ALIGN always used the absolute value of dot. * ldexp.c (align_dot_val): New function. (fold_unary <ALIGN_K, NEXT>): Use it.
This commit is contained in:
parent
40f77f827b
commit
a2c59f280d
@ -1,3 +1,8 @@
|
|||||||
|
2015-07-10 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* ldexp.c (align_dot_val): New function.
|
||||||
|
(fold_unary <ALIGN_K, NEXT>): Use it.
|
||||||
|
|
||||||
2015-07-03 Kai Tietz <ktietz@redhat.com>
|
2015-07-03 Kai Tietz <ktietz@redhat.com>
|
||||||
|
|
||||||
PR ld/11539
|
PR ld/11539
|
||||||
|
12
ld/ldexp.c
12
ld/ldexp.c
@ -257,6 +257,14 @@ new_rel_from_abs (bfd_vma value)
|
|||||||
expld.result.section = s;
|
expld.result.section = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
align_dot_val (bfd_vma align)
|
||||||
|
{
|
||||||
|
bfd_vma base = expld.section->vma;
|
||||||
|
|
||||||
|
new_rel_from_abs (base + align_n (expld.dot - base, align));
|
||||||
|
}
|
||||||
|
|
||||||
/* New-function for the definedness hash table. */
|
/* New-function for the definedness hash table. */
|
||||||
|
|
||||||
static struct bfd_hash_entry *
|
static struct bfd_hash_entry *
|
||||||
@ -335,7 +343,7 @@ fold_unary (etree_type *tree)
|
|||||||
{
|
{
|
||||||
case ALIGN_K:
|
case ALIGN_K:
|
||||||
if (expld.phase != lang_first_phase_enum)
|
if (expld.phase != lang_first_phase_enum)
|
||||||
new_rel_from_abs (align_n (expld.dot, expld.result.value));
|
align_dot_val (expld.result.value);
|
||||||
else
|
else
|
||||||
expld.result.valid_p = FALSE;
|
expld.result.valid_p = FALSE;
|
||||||
break;
|
break;
|
||||||
@ -365,7 +373,7 @@ fold_unary (etree_type *tree)
|
|||||||
if (expld.phase != lang_first_phase_enum)
|
if (expld.phase != lang_first_phase_enum)
|
||||||
{
|
{
|
||||||
make_abs ();
|
make_abs ();
|
||||||
expld.result.value = align_n (expld.dot, expld.result.value);
|
align_dot_val (expld.result.value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
expld.result.valid_p = FALSE;
|
expld.result.valid_p = FALSE;
|
||||||
|
Loading…
Reference in New Issue
Block a user