diff options
author | Jeffrey A Law <law@cygnus.com> | 2001-09-05 13:16:46 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2001-09-05 07:16:46 -0600 |
commit | 8db4c86715fc58e95cc57f9ea4c9e88c1555e1f2 (patch) | |
tree | a3bebd7ab6b588243c494943d8fa9261b5e49f29 /gcc | |
parent | caa297fe38f3cd4f60596e49513c88efb9d31e83 (diff) | |
download | gcc-8db4c86715fc58e95cc57f9ea4c9e88c1555e1f2.zip gcc-8db4c86715fc58e95cc57f9ea4c9e88c1555e1f2.tar.gz gcc-8db4c86715fc58e95cc57f9ea4c9e88c1555e1f2.tar.bz2 |
stor-layout.c (layout_type): Complain if an array's size can not be represented in a size_t.
* stor-layout.c (layout_type): Complain if an array's size can
not be represented in a size_t.
* config/h8300/elf.h (ENDFILE_SPEC, STARTFILE_SPEC): Define.
Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r45413
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/h8300/elf.h | 11 | ||||
-rw-r--r-- | gcc/stor-layout.c | 13 |
3 files changed, 32 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1352561..bc21be5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2001-09-05 Jeffrey A Law (law@cygnus.com) + Jason Merrill (jason@redhat.com) + + * stor-layout.c (layout_type): Complain if an array's size can + not be represented in a size_t. + + * config/h8300/elf.h (ENDFILE_SPEC, STARTFILE_SPEC): Define. + 2001-09-05 David Billinghurst <David.Billinghurst@riotinto.com> * gcc.c: (process_command) Add parentheses around assignment diff --git a/gcc/config/h8300/elf.h b/gcc/config/h8300/elf.h index 7cf0b64..20aa4cf 100644 --- a/gcc/config/h8300/elf.h +++ b/gcc/config/h8300/elf.h @@ -24,6 +24,17 @@ #include "elfos.h" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC "crtend.o%s %{pg:gcrtn.o%s}%{!pg:crtn.o%s}" + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "%{!shared: \ + %{!symbolic: \ + %{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}}}\ + %{pg:gcrti.o%s}%{!pg:crti.o%s} \ + crtbegin.o%s" + /* Output at beginning/end of assembler file. */ #undef ASM_FILE_START #define ASM_FILE_START(FILE) \ diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index dfa4c10..3a4f998 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -1442,6 +1442,19 @@ layout_type (type) if (TYPE_SIZE_UNIT (element) != 0 && ! integer_onep (element_size)) TYPE_SIZE_UNIT (type) = size_binop (MULT_EXPR, TYPE_SIZE_UNIT (element), length); + + /* Complain if the user has requested an array too large to + fit in size_t. */ + if (TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST + && TREE_OVERFLOW (TYPE_SIZE (type))) + { + error ("requested array too large for target"); + + /* Avoid crashing later. */ + TYPE_SIZE (type) = element_size; + if (TYPE_SIZE_UNIT (type)) + TYPE_SIZE_UNIT (type) = TYPE_SIZE_UNIT (element); + } } /* Now round the alignment and size, |