[PATCH] gas: drop sprint_value()
Andreas Krebbel
krebbel@linux.ibm.com
Fri Apr 16 19:22:44 GMT 2021
On 4/16/21 9:12 AM, Jan Beulich wrote:
> 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/
> 2021-04-XX Jan Beulich <jbeulich@suse.com>
>
> * 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.
Ok for s390. Thanks!
Andreas
>
> --- 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,
> --- 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;
> --- 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
> --- a/gas/doc/internals.texi
> +++ b/gas/doc/internals.texi
> @@ -1918,13 +1918,6 @@ after all input has been read, but messa
> 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
> --- 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)
>
> --- a/gas/write.c
> +++ b/gas/write.c
> @@ -1110,9 +1110,9 @@ fixup_segment (fixS *fixP, segT this_seg
> 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
> 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),
>
More information about the Binutils
mailing list