re PR target/19388 (MAX_OFILE_ALIGNMENT on PA HP-UX)

PR ada/19388
	* pa.c (pa_asm_output_aligned_common): Warn if specified alignment
	exceeds maximum alignment for global common data.
	* pa64-hpux.h (MAX_OFILE_ALIGNMENT): Define to 32768.
	* som.h (MAX_OFILE_ALIGNMENT): Likewise.

From-SVN: r93698
This commit is contained in:
John David Anglin 2005-01-15 17:10:02 +00:00 committed by John David Anglin
parent 19e1af6e02
commit 22f549fddc
4 changed files with 25 additions and 9 deletions

View File

@ -1,3 +1,11 @@
2005-01-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR ada/19388
* pa.c (pa_asm_output_aligned_common): Warn if specified alignment
exceeds maximum alignment for global common data.
* pa64-hpux.h (MAX_OFILE_ALIGNMENT): Define to 32768.
* som.h (MAX_OFILE_ALIGNMENT): Likewise.
2004-01-15 Roger Sayle <roger@eyesopen.com>
* tree-ssa-dom.c (extract_range_from_cond): Correct condition.

View File

@ -8253,6 +8253,17 @@ pa_asm_output_aligned_common (FILE *stream,
unsigned HOST_WIDE_INT size,
unsigned int align)
{
unsigned int max_common_align;
max_common_align = TARGET_64BIT ? 128 : (size >= 4096 ? 256 : 64);
if (align > max_common_align)
{
warning ("alignment (%u) for %s exceeds maximum alignment "
"for global common data. Using %u",
align / BITS_PER_UNIT, name, max_common_align / BITS_PER_UNIT);
align = max_common_align;
}
bss_section ();
assemble_name (stream, name);

View File

@ -122,11 +122,10 @@ Boston, MA 02111-1307, USA. */
The .align directive in the HP assembler allows alignments up to
4096 bytes. However, the maximum alignment of a global common symbol
is 16 bytes using HP ld. For consistency, we use the same limit
with GNU ld. */
is 16 bytes using HP ld. Unfortunately, this macro doesn't provide
a method to check for common symbols. */
#undef MAX_OFILE_ALIGNMENT
#define MAX_OFILE_ALIGNMENT \
(TREE_PUBLIC (decl) && DECL_COMMON (decl) ? 128 : 32768)
#define MAX_OFILE_ALIGNMENT 32768
/* Due to limitations in the target structure, it isn't currently possible
to dynamically switch between the GNU and HP assemblers. */

View File

@ -287,11 +287,9 @@ do { \
The .align directive in the HP assembler allows alignments up to 4096
bytes. However, the maximum alignment of a global common symbol is 8
bytes for objects smaller than the page size (4096 bytes). For larger
objects, the linker provides an alignment of 32 bytes. */
#define MAX_OFILE_ALIGNMENT \
(TREE_PUBLIC (decl) && DECL_COMMON (decl) \
? (host_integerp (DECL_SIZE_UNIT (decl), 1) >= 4096 ? 256 : 64) \
: 32768)
objects, the linker provides an alignment of 32 bytes. Unfortunately,
this macro doesn't provide a mechanism to test for common symbols. */
#define MAX_OFILE_ALIGNMENT 32768
/* The SOM linker hardcodes paths into binaries. As a result, dotdots
must be removed from library prefixes to prevent binaries from depending