From 9a8041fd94b7b5c12cb802f87648cce954d18d2a Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 19 Apr 2021 13:28:35 +0200 Subject: gas: drop sprint_value() Its (documented) behavior is unhelpful in particular in 64-bit build environments: While printing large 32-bit numbers in decimal already isn't very meaningful to most people, this even more so goes for yet larger 64-bit numbers. bfd_sprintf_vma() still tries to limit the number of digits printed (without depending on a build system property), but uniformly produces hex output. --- gas/ChangeLog | 11 +++++++++++ gas/as.h | 1 - gas/config/tc-i386.c | 4 ++-- gas/config/tc-s390.c | 2 +- gas/doc/internals.texi | 7 ------- gas/messages.c | 16 ---------------- gas/write.c | 8 +++++--- 7 files changed, 19 insertions(+), 30 deletions(-) (limited to 'gas') diff --git a/gas/ChangeLog b/gas/ChangeLog index 72b8c69..2c498a6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,14 @@ +2021-04-19 Jan Beulich + + * as.h (sprint_value): Delete. + * messages.c (sprint_value): Likewise. + * config/tc-i386.c (offset_in_range): Use bfd_sprintf_vma in + place of sprint_value. + * config/tc-s390.c (s390_insert_operand): Likewise. + * doc/internals.texi (sprint_value): Delete section. + * write.c (fixup_segment): Likewise. + (relax_segment): Likewise. + 2021-04-16 Przemyslaw Wirkus * testsuite/gas/aarch64/rme-invalid.d: New test. diff --git a/gas/as.h b/gas/as.h index 6b68954..14a768f 100644 --- a/gas/as.h +++ b/gas/as.h @@ -428,7 +428,6 @@ PRINTF_WHERE_LIKE (as_warn_where); void as_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; void signal_init (void); -void sprint_value (char *, addressT); int had_errors (void); int had_warnings (void); void as_warn_value_out_of_range (const char *, offsetT, offsetT, offsetT, diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index b6d43b5f..e49d0f5 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -2556,8 +2556,8 @@ offset_in_range (offsetT val, int size) { char buf1[40], buf2[40]; - sprint_value (buf1, val); - sprint_value (buf2, val & mask); + bfd_sprintf_vma (stdoutput, buf1, val); + bfd_sprintf_vma (stdoutput, buf2, val & mask); as_warn (_("%s shortened to %s"), buf1, buf2); } return val & mask; diff --git a/gas/config/tc-s390.c b/gas/config/tc-s390.c index 0750f25..064dd33 100644 --- a/gas/config/tc-s390.c +++ b/gas/config/tc-s390.c @@ -626,7 +626,7 @@ s390_insert_operand (unsigned char *insn, min <<= 1; max <<= 1; } - sprint_value (buf, val); + bfd_sprintf_vma (stdoutput, buf, val); if (file == (char *) NULL) as_bad (err, buf, (int) min, (int) max); else diff --git a/gas/doc/internals.texi b/gas/doc/internals.texi index 3b345d5..91ef975 100644 --- a/gas/doc/internals.texi +++ b/gas/doc/internals.texi @@ -1918,13 +1918,6 @@ after all input has been read, but messages about fixups should refer to the original filename and line number that they are applicable to. @end deftypefun -@deftypefun @{@} void sprint_value (char *@var{buf}, valueT @var{val}) -This function is helpful for converting a @code{valueT} value into printable -format, in case it's wider than modes that @code{*printf} can handle. If the -type is narrow enough, a decimal number will be produced; otherwise, it will be -in hexadecimal. The value itself is not examined to make this determination. -@end deftypefun - @node Test suite @section Test suite @cindex test suite diff --git a/gas/messages.c b/gas/messages.c index 0728146..62f9312 100644 --- a/gas/messages.c +++ b/gas/messages.c @@ -356,22 +356,6 @@ signal_init (void) /* Support routines. */ -void -sprint_value (char *buf, valueT val) -{ - if (sizeof (val) <= sizeof (long)) - { - sprintf (buf, "%ld", (long) val); - return; - } - if (sizeof (val) <= sizeof (bfd_vma)) - { - sprintf_vma (buf, val); - return; - } - abort (); -} - #define HEX_MAX_THRESHOLD 1024 #define HEX_MIN_THRESHOLD -(HEX_MAX_THRESHOLD) diff --git a/gas/write.c b/gas/write.c index 706c9c0..682e28f 100644 --- a/gas/write.c +++ b/gas/write.c @@ -1110,9 +1110,9 @@ fixup_segment (fixS *fixP, segT this_segment) if ((add_number & mask) != 0 && (add_number & mask) != mask) { char buf[50], buf2[50]; - sprint_value (buf, fragP->fr_address + fixP->fx_where); + bfd_sprintf_vma (stdoutput, buf, fragP->fr_address + fixP->fx_where); if (add_number > 1000) - sprint_value (buf2, add_number); + bfd_sprintf_vma (stdoutput, buf2, add_number); else sprintf (buf2, "%ld", (long) add_number); as_bad_where (fixP->fx_file, fixP->fx_line, @@ -2866,7 +2866,9 @@ relax_segment (struct frag *segment_frag_root, segT segment, int pass) if (flag_warn_displacement) { char buf[50]; - sprint_value (buf, (addressT) lie->addnum); + + bfd_sprintf_vma (stdoutput, buf, + (addressT) lie->addnum); as_warn_where (fragP->fr_file, fragP->fr_line, _(".word %s-%s+%s didn't fit"), S_GET_NAME (lie->add), -- cgit v1.1