mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 01:50:24 +08:00
.file file number checking
This adds another test for file numbers given in .file directives, checking that the value can be represented as an unsigned int and that a memory allocation expression doesn't overflow. I removed a test added recently since an earlier test (num < 1) already covers the (num < 0) case. * dwarf2dbg.c: Whitespace fixes. (get_filenum): Don't strdup "file". Adjust error message. (dwarf2_directive_filename): Use an unsigned type for "num". Catch truncation of file number and overflow of get_filenum XRESIZEVEC multiplication. Delete dead code.
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
2019-05-15 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* dwarf2dbg.c: Whitespace fixes.
|
||||||
|
(get_filenum): Don't strdup "file". Adjust error message.
|
||||||
|
(dwarf2_directive_filename): Use an unsigned type for "num".
|
||||||
|
Catch truncation of file number and overflow of get_filenum
|
||||||
|
XRESIZEVEC multiplication. Delete dead code.
|
||||||
|
|
||||||
2019-05-15 Alan Modra <amodra@gmail.com>
|
2019-05-15 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR 24538
|
PR 24538
|
||||||
@ -256,7 +264,7 @@
|
|||||||
|
|
||||||
2019-04-29 John Darrington <john@darrington.wattle.id.au>
|
2019-04-29 John Darrington <john@darrington.wattle.id.au>
|
||||||
|
|
||||||
* testsuite/gas/s12z/truncated.d: New file.
|
* testsuite/gas/s12z/truncated.d: New file.
|
||||||
* testsuite/gas/s12z/truncated.s: New file.
|
* testsuite/gas/s12z/truncated.s: New file.
|
||||||
* testsuite/gas/s12z/s12z.exp: Add new test.
|
* testsuite/gas/s12z/s12z.exp: Add new test.
|
||||||
|
|
||||||
@ -509,7 +517,7 @@
|
|||||||
* testsuite/gas/arm/archv8m_1m-cmse-main.s: Likewise.
|
* testsuite/gas/arm/archv8m_1m-cmse-main.s: Likewise.
|
||||||
|
|
||||||
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
||||||
Andre Vieira <andre.simoesdiasvieira@arm.com>
|
Andre Vieira <andre.simoesdiasvieira@arm.com>
|
||||||
|
|
||||||
* config/tc-arm.c (operand_parse_code): Add OP_LR and OP_oLR
|
* config/tc-arm.c (operand_parse_code): Add OP_LR and OP_oLR
|
||||||
for the LR operand and optional LR operand.
|
for the LR operand and optional LR operand.
|
||||||
@ -531,7 +539,7 @@
|
|||||||
* testsuite/gas/arm/armv8_1-m-tloop-bad.l: New.
|
* testsuite/gas/arm/armv8_1-m-tloop-bad.l: New.
|
||||||
|
|
||||||
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
||||||
Andre Vieira <andre.simoesdiasvieira@arm.com>
|
Andre Vieira <andre.simoesdiasvieira@arm.com>
|
||||||
|
|
||||||
* config/tc-arm.c (T16_32_TAB): New entriy for bfcsel.
|
* config/tc-arm.c (T16_32_TAB): New entriy for bfcsel.
|
||||||
(do_t_v8_1_branch): New switch case for bfcsel.
|
(do_t_v8_1_branch): New switch case for bfcsel.
|
||||||
@ -552,7 +560,7 @@
|
|||||||
(tc_gen_reloc): Likewise.
|
(tc_gen_reloc): Likewise.
|
||||||
|
|
||||||
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
||||||
Andre Vieira <andre.simoesdiasvieira@arm.com>
|
Andre Vieira <andre.simoesdiasvieira@arm.com>
|
||||||
|
|
||||||
* config/tc-arm.c (T16_32_TAB): New entrie for bfl.
|
* config/tc-arm.c (T16_32_TAB): New entrie for bfl.
|
||||||
(do_t_v8_1_branch): New switch case for bfl.
|
(do_t_v8_1_branch): New switch case for bfl.
|
||||||
@ -584,7 +592,7 @@
|
|||||||
* testsuite/gas/arm/armv8_1-m-bf-exchange-bad.d: New
|
* testsuite/gas/arm/armv8_1-m-bf-exchange-bad.d: New
|
||||||
|
|
||||||
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
||||||
Andre Vieira <andre.simoesdiasvieira@arm.com>
|
Andre Vieira <andre.simoesdiasvieira@arm.com>
|
||||||
|
|
||||||
* config/tc-arm.c (T16_32_TAB): New entries for bf.
|
* config/tc-arm.c (T16_32_TAB): New entries for bf.
|
||||||
(do_t_branch_future): New.
|
(do_t_branch_future): New.
|
||||||
@ -660,11 +668,11 @@
|
|||||||
* testsuite/gas/mips/mips.exp: Run the new test.
|
* testsuite/gas/mips/mips.exp: Run the new test.
|
||||||
|
|
||||||
2019-04-12 John Darrington <john@darrington.wattle.id.au>
|
2019-04-12 John Darrington <john@darrington.wattle.id.au>
|
||||||
|
|
||||||
config/tc-s12z.h: Remove definition of macro TC_M68K
|
config/tc-s12z.h: Remove definition of macro TC_M68K
|
||||||
|
|
||||||
2019-04-01 John Darrington <john@darrington.wattle.id.au>
|
2019-04-01 John Darrington <john@darrington.wattle.id.au>
|
||||||
|
|
||||||
config/tc-s12z.c: Use bfd_boolean where appropriate.
|
config/tc-s12z.c: Use bfd_boolean where appropriate.
|
||||||
|
|
||||||
2019-04-11 Max Filippov <jcmvbkbc@gmail.com>
|
2019-04-11 Max Filippov <jcmvbkbc@gmail.com>
|
||||||
@ -1292,7 +1300,7 @@
|
|||||||
|
|
||||||
2019-01-31 John Darrington <john@darrington.wattle.id.au>
|
2019-01-31 John Darrington <john@darrington.wattle.id.au>
|
||||||
|
|
||||||
* config/tc-s12z.c (lex_imm): Add new argument exp_o.
|
* config/tc-s12z.c (lex_imm): Add new argument exp_o.
|
||||||
(emit_reloc): New function.
|
(emit_reloc): New function.
|
||||||
(md_apply_fix): [BFD_RELOC_S12Z_OPR] Recognise that it
|
(md_apply_fix): [BFD_RELOC_S12Z_OPR] Recognise that it
|
||||||
can be either 2 bytes or 3 bytes long.
|
can be either 2 bytes or 3 bytes long.
|
||||||
@ -1545,7 +1553,7 @@
|
|||||||
|
|
||||||
2019-01-09 John Darrington <john@darrington.wattle.id.au>
|
2019-01-09 John Darrington <john@darrington.wattle.id.au>
|
||||||
|
|
||||||
* testsuite/gas/s12z/jsr.s: New case.
|
* testsuite/gas/s12z/jsr.s: New case.
|
||||||
* testsuite/gas/s12z/jsr.d: New case.
|
* testsuite/gas/s12z/jsr.d: New case.
|
||||||
|
|
||||||
2019-01-09 Andrew Paprocki <andrew@ishiboo.com>
|
2019-01-09 Andrew Paprocki <andrew@ishiboo.com>
|
||||||
|
@ -754,7 +754,7 @@ get_filenum (const char *filename, unsigned int num)
|
|||||||
/* Catch wraparound. */
|
/* Catch wraparound. */
|
||||||
if (files_allocated <= old)
|
if (files_allocated <= old)
|
||||||
{
|
{
|
||||||
as_bad (_("file number %u is too big"), i);
|
as_bad (_("file number %lu is too big"), (unsigned long) i);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -762,7 +762,7 @@ get_filenum (const char *filename, unsigned int num)
|
|||||||
memset (files + old, 0, (i + 32 - old) * sizeof (struct file_entry));
|
memset (files + old, 0, (i + 32 - old) * sizeof (struct file_entry));
|
||||||
}
|
}
|
||||||
|
|
||||||
files[i].filename = num ? file : xstrdup (file);
|
files[i].filename = file;
|
||||||
files[i].dir = dir;
|
files[i].dir = dir;
|
||||||
if (files_in_use < i + 1)
|
if (files_in_use < i + 1)
|
||||||
files_in_use = i + 1;
|
files_in_use = i + 1;
|
||||||
@ -781,7 +781,7 @@ get_filenum (const char *filename, unsigned int num)
|
|||||||
char *
|
char *
|
||||||
dwarf2_directive_filename (void)
|
dwarf2_directive_filename (void)
|
||||||
{
|
{
|
||||||
offsetT num;
|
valueT num;
|
||||||
char *filename;
|
char *filename;
|
||||||
int filename_len;
|
int filename_len;
|
||||||
|
|
||||||
@ -799,7 +799,7 @@ dwarf2_directive_filename (void)
|
|||||||
return NULL;
|
return NULL;
|
||||||
demand_empty_rest_of_line ();
|
demand_empty_rest_of_line ();
|
||||||
|
|
||||||
if (num < 1)
|
if ((offsetT) num < 1)
|
||||||
{
|
{
|
||||||
as_bad (_("file number less than one"));
|
as_bad (_("file number less than one"));
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -809,14 +809,15 @@ dwarf2_directive_filename (void)
|
|||||||
being supplied. Turn off gas generated debug info. */
|
being supplied. Turn off gas generated debug info. */
|
||||||
debug_type = DEBUG_NONE;
|
debug_type = DEBUG_NONE;
|
||||||
|
|
||||||
if (num < (offsetT) files_in_use && files[num].filename != 0)
|
if (num != (unsigned int) num
|
||||||
|
|| num >= (size_t) -1 / sizeof (struct file_entry) - 32)
|
||||||
{
|
{
|
||||||
as_bad (_("file number %ld already allocated"), (long) num);
|
as_bad (_("file number %lu is too big"), (unsigned long) num);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
else if (num < 0)
|
if (num < files_in_use && files[num].filename != 0)
|
||||||
{
|
{
|
||||||
as_bad (_("file number %ld is too small!"), (long) num);
|
as_bad (_("file number %u already allocated"), (unsigned int) num);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1172,10 +1173,10 @@ scale_addr_delta (addressT *addr_delta)
|
|||||||
if (DWARF2_LINE_MIN_INSN_LENGTH > 1)
|
if (DWARF2_LINE_MIN_INSN_LENGTH > 1)
|
||||||
{
|
{
|
||||||
if (*addr_delta % DWARF2_LINE_MIN_INSN_LENGTH != 0 && !printed_this)
|
if (*addr_delta % DWARF2_LINE_MIN_INSN_LENGTH != 0 && !printed_this)
|
||||||
{
|
{
|
||||||
as_bad("unaligned opcodes detected in executable segment");
|
as_bad("unaligned opcodes detected in executable segment");
|
||||||
printed_this = 1;
|
printed_this = 1;
|
||||||
}
|
}
|
||||||
*addr_delta /= DWARF2_LINE_MIN_INSN_LENGTH;
|
*addr_delta /= DWARF2_LINE_MIN_INSN_LENGTH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1750,10 +1751,10 @@ out_file_list (void)
|
|||||||
out_uleb128 (files[i].dir); /* directory number */
|
out_uleb128 (files[i].dir); /* directory number */
|
||||||
/* Output the last modification timestamp. */
|
/* Output the last modification timestamp. */
|
||||||
out_uleb128 (DWARF2_FILE_TIME_NAME (files[i].filename,
|
out_uleb128 (DWARF2_FILE_TIME_NAME (files[i].filename,
|
||||||
files[i].dir ? dirs [files [i].dir] : ""));
|
files[i].dir ? dirs [files [i].dir] : ""));
|
||||||
/* Output the filesize. */
|
/* Output the filesize. */
|
||||||
out_uleb128 (DWARF2_FILE_SIZE_NAME (files[i].filename,
|
out_uleb128 (DWARF2_FILE_SIZE_NAME (files[i].filename,
|
||||||
files[i].dir ? dirs [files [i].dir] : ""));
|
files[i].dir ? dirs [files [i].dir] : ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Terminate filename list. */
|
/* Terminate filename list. */
|
||||||
|
Reference in New Issue
Block a user