mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 10:35:12 +08:00
* emulparams/elf32_dlx.sh (TARGET_PAGE_SIZE): Set to 1.
(MAXPAGESIZE): Set to 1. * ld.h (ALIGN_N): Delete. * ldexp.h (align_n): Declare. * ldexp.c (align_n): New function. (fold_binary): Use align_n instead of ALIGN_N. (exp_fold_tree): Likewise. * ldlang.c (lang_size_sections_1): Likewise. (lang_one_common): Likewise.
This commit is contained in:
parent
8e7157081c
commit
c553bb910d
13
ld/ChangeLog
13
ld/ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2002-08-13 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* emulparams/elf32_dlx.sh (TARGET_PAGE_SIZE): Set to 1.
|
||||||
|
(MAXPAGESIZE): Set to 1.
|
||||||
|
|
||||||
|
* ld.h (ALIGN_N): Delete.
|
||||||
|
* ldexp.h (align_n): Declare.
|
||||||
|
* ldexp.c (align_n): New function.
|
||||||
|
(fold_binary): Use align_n instead of ALIGN_N.
|
||||||
|
(exp_fold_tree): Likewise.
|
||||||
|
* ldlang.c (lang_size_sections_1): Likewise.
|
||||||
|
(lang_one_common): Likewise.
|
||||||
|
|
||||||
2002-07-31 Graeme Peterson <gp@qnx.com>
|
2002-07-31 Graeme Peterson <gp@qnx.com>
|
||||||
|
|
||||||
* configure.tgt: Add support for powerpc{le}-*-nto* targets.
|
* configure.tgt: Add support for powerpc{le}-*-nto* targets.
|
||||||
|
@ -4,6 +4,6 @@ OUTPUT_FORMAT="elf32-dlx"
|
|||||||
ARCH=dlx
|
ARCH=dlx
|
||||||
MACHINE=
|
MACHINE=
|
||||||
TEXT_START_ADDR=0
|
TEXT_START_ADDR=0
|
||||||
TARGET_PAGE_SIZE=0
|
TARGET_PAGE_SIZE=1
|
||||||
EMBEDDED=yes
|
EMBEDDED=yes
|
||||||
MAXPAGESIZE=0
|
MAXPAGESIZE=1
|
||||||
|
8
ld/ld.h
8
ld/ld.h
@ -91,14 +91,6 @@ typedef struct user_section_struct {
|
|||||||
#define LONG_SIZE (4)
|
#define LONG_SIZE (4)
|
||||||
#define QUAD_SIZE (8)
|
#define QUAD_SIZE (8)
|
||||||
|
|
||||||
/* ALIGN macro changed to ALIGN_N to avoid */
|
|
||||||
/* conflict in /usr/include/machine/machparam.h */
|
|
||||||
/* WARNING: If THIS is a 64 bit address and BOUNDARY is a 32 bit int,
|
|
||||||
you must coerce boundary to the same type as THIS.
|
|
||||||
??? Is there a portable way to avoid this. */
|
|
||||||
#define ALIGN_N(this, boundary) \
|
|
||||||
((( (this) + ((boundary) -1)) & (~((boundary)-1))))
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 1 => assign space to common symbols even if `relocatable_output'. */
|
/* 1 => assign space to common symbols even if `relocatable_output'. */
|
||||||
boolean force_common_definition;
|
boolean force_common_definition;
|
||||||
|
19
ld/ldexp.c
19
ld/ldexp.c
@ -350,7 +350,7 @@ fold_binary (tree, current_section, allocation_done, dot, dotp)
|
|||||||
{
|
{
|
||||||
bfd_vma maxpage = result.value;
|
bfd_vma maxpage = result.value;
|
||||||
|
|
||||||
result.value = ALIGN_N (dot, maxpage);
|
result.value = align_n (dot, maxpage);
|
||||||
if (exp_data_seg.phase != exp_dataseg_adjust)
|
if (exp_data_seg.phase != exp_dataseg_adjust)
|
||||||
{
|
{
|
||||||
result.value += dot & (maxpage - 1);
|
result.value += dot & (maxpage - 1);
|
||||||
@ -593,14 +593,14 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
|
|||||||
{
|
{
|
||||||
case ALIGN_K:
|
case ALIGN_K:
|
||||||
if (allocation_done != lang_first_phase_enum)
|
if (allocation_done != lang_first_phase_enum)
|
||||||
result = new_rel_from_section (ALIGN_N (dot, result.value),
|
result = new_rel_from_section (align_n (dot, result.value),
|
||||||
current_section);
|
current_section);
|
||||||
else
|
else
|
||||||
result.valid_p = false;
|
result.valid_p = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ABSOLUTE:
|
case ABSOLUTE:
|
||||||
if (allocation_done != lang_first_phase_enum && result.valid_p)
|
if (allocation_done != lang_first_phase_enum)
|
||||||
{
|
{
|
||||||
result.value += result.section->bfd_section->vma;
|
result.value += result.section->bfd_section->vma;
|
||||||
result.section = abs_output_section;
|
result.section = abs_output_section;
|
||||||
@ -629,7 +629,7 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
|
|||||||
if (allocation_done == lang_allocating_phase_enum)
|
if (allocation_done == lang_allocating_phase_enum)
|
||||||
{
|
{
|
||||||
make_abs (&result);
|
make_abs (&result);
|
||||||
result.value = ALIGN_N (dot, result.value);
|
result.value = align_n (dot, result.value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
result.valid_p = false;
|
result.valid_p = false;
|
||||||
@ -1127,3 +1127,14 @@ exp_get_abs_int (tree, def, name, allocation_done)
|
|||||||
|
|
||||||
return res.value;
|
return res.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bfd_vma align_n (value, align)
|
||||||
|
bfd_vma value;
|
||||||
|
bfd_vma align;
|
||||||
|
{
|
||||||
|
if (align <= 1)
|
||||||
|
return value;
|
||||||
|
|
||||||
|
value = (value + align - 1) / align;
|
||||||
|
return value * align;
|
||||||
|
}
|
||||||
|
@ -122,5 +122,6 @@ int exp_get_value_int PARAMS ((etree_type *, int, char *, lang_phase_type));
|
|||||||
fill_type *exp_get_fill PARAMS ((etree_type *, fill_type *, char *,
|
fill_type *exp_get_fill PARAMS ((etree_type *, fill_type *, char *,
|
||||||
lang_phase_type));
|
lang_phase_type));
|
||||||
bfd_vma exp_get_abs_int PARAMS ((etree_type *, int, char *, lang_phase_type));
|
bfd_vma exp_get_abs_int PARAMS ((etree_type *, int, char *, lang_phase_type));
|
||||||
|
bfd_vma align_n PARAMS ((bfd_vma, bfd_vma));
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -3047,9 +3047,8 @@ lang_size_sections_1 (s, output_section_statement, prev, fill, dot, relax)
|
|||||||
|
|
||||||
/* Put the section within the requested block size, or
|
/* Put the section within the requested block size, or
|
||||||
align at the block boundary. */
|
align at the block boundary. */
|
||||||
after = ALIGN_N (os->bfd_section->vma
|
after = align_n (os->bfd_section->vma
|
||||||
+ os->bfd_section->_raw_size / opb,
|
+ os->bfd_section->_raw_size / opb,
|
||||||
/* The coercion here is important, see ld.h. */
|
|
||||||
(bfd_vma) os->block_value);
|
(bfd_vma) os->block_value);
|
||||||
|
|
||||||
if (bfd_is_abs_section (os->bfd_section))
|
if (bfd_is_abs_section (os->bfd_section))
|
||||||
@ -3748,8 +3747,8 @@ lang_one_common (h, info)
|
|||||||
section = h->u.c.p->section;
|
section = h->u.c.p->section;
|
||||||
|
|
||||||
/* Increase the size of the section. */
|
/* Increase the size of the section. */
|
||||||
section->_cooked_size = ALIGN_N ((section->_cooked_size + opb - 1) / opb,
|
section->_cooked_size = align_n ((section->_cooked_size + opb - 1) / opb,
|
||||||
(bfd_size_type) (1 << power_of_two)) * opb;
|
(bfd_vma) 1 << power_of_two) * opb;
|
||||||
|
|
||||||
/* Adjust the alignment if necessary. */
|
/* Adjust the alignment if necessary. */
|
||||||
if (power_of_two > section->alignment_power)
|
if (power_of_two > section->alignment_power)
|
||||||
|
Loading…
Reference in New Issue
Block a user