[v2,0/3] RISC-V: The series to supporting mapping symbols

Message ID 20210709072825.13709-1-nelson.chu@sifive.com
Headers show
Series
  • RISC-V: The series to supporting mapping symbols
Related show

Message

Nelson Chu July 9, 2021, 7:28 a.m.
Hi Guys,

See in advance what are the difference with v1,
* Support data mapping symbols with the data size, if they are added
  by cons_worker, e.g. $d2, $d4.
* Support alignment mapping symbols, $a and $a1.  If the instructions
  are used for alignment, then we dump them with the prefix align.<insn>.
* Since the above two new features, we don't need to record all
  mapping symbols of the fragments.  Instead, only record the
  first and last mapping symbols should be enough.
* Extend .insn directive to support hardcode encoding.

These are all binutils changes, but not sure if the changes will break
the gdb disassembler.  Unfortunately I am not familiar with gdb, hope
gdb experts can give some suggestions, or warnings if something may be
broken.

Besides, the binutils readelf testcases in the second patch are affected
by the first patch, so I send them as the same series.  But in fact the
first patch can be regarded as an independent issue.  Therefore, I think
we can commit it separately first, if everything looks good.

The elf/linux toolchain regressions all passed, looks fine so far.

Thanks
Nelson

Comments

Kito Cheng July 9, 2021, 8 a.m. | #1
I would suggest this patch could be a standalone patch from the
mapping symbol patch set.

On Fri, Jul 9, 2021 at 3:28 PM Nelson Chu <nelson.chu@sifive.com> wrote:
>

> Since gcc commit, 3c70b3ca1ef58f302bf8c16d9e7c7bb8626408bf, we now enable

> elf attributes for all riscv targets by default in gcc.  Therefore, I

> think binutils should have the same behavior, in case users are writing

> assembly files.

>

> ChangLog:

>

> binutils/

>

>         * testsuite/binutils-all/readelf.s: Add comments for riscv.

>         * testsuite/binutils-all/readelf.s-64: Likewise.

>         * testsuite/binutils-all/readelf.s-64-unused: Likewise.

>         * testsuite/binutils-all/readelf.ss: Likewise.

>         * testsuite/binutils-all/readelf.ss-64: Likewise.

>         * testsuite/binutils-all/readelf.ss-64-unused: Likewise.

>

> gas/

>

>         * configure.ac: If --enable-default-riscv-attribute isn't set,

>         then we enable the elf attributes for all riscv targets by

>         default.

>         * configure: Regenerated.

> ---

>  binutils/testsuite/binutils-all/readelf.s            | 3 ++-

>  binutils/testsuite/binutils-all/readelf.s-64         | 2 ++

>  binutils/testsuite/binutils-all/readelf.s-64-unused  | 2 ++

>  binutils/testsuite/binutils-all/readelf.ss           | 1 +

>  binutils/testsuite/binutils-all/readelf.ss-64        | 1 +

>  binutils/testsuite/binutils-all/readelf.ss-64-unused | 1 +

>  gas/configure                                        | 9 +--------

>  gas/configure.ac                                     | 9 +--------

>  8 files changed, 11 insertions(+), 17 deletions(-)

>

> diff --git a/binutils/testsuite/binutils-all/readelf.s b/binutils/testsuite/binutils-all/readelf.s

> index 6ae4dc756b9..ff37acb4da8 100644

> --- a/binutils/testsuite/binutils-all/readelf.s

> +++ b/binutils/testsuite/binutils-all/readelf.s

> @@ -11,9 +11,10 @@ Section Headers:

>  #...

>   +\[ .\] .* +PROGBITS +00000000 0000(3c|40|44|48|50) 0000(04|10) 00 +WA +0 +0 +(.|..)

>   +\[ .\] .* +NOBITS +00000000 0000(40|44|48|4c|60) 000000 00 +WA +0 +0 +(.|..)

> -# ARM targets put .ARM.attributes here

> +# ARM targets put .ARM.attributes here.

>  # MIPS targets put .reginfo, .mdebug, .MIPS.abiflags and .gnu.attributes here.

>  # v850 targets put .call_table_data and .call_table_text here.

> +# riscv targets put .riscv.attributes here.

>  #...

>   +\[..\] .symtab +SYMTAB +00000000 0+.* 0+.* 10 +.. +.+ +4

>   +\[..\] .strtab +STRTAB +00000000 0+.* 0+.* 00 .* +0 +0 +1

> diff --git a/binutils/testsuite/binutils-all/readelf.s-64 b/binutils/testsuite/binutils-all/readelf.s-64

> index 92ec05f0376..4c957f7a938 100644

> --- a/binutils/testsuite/binutils-all/readelf.s-64

> +++ b/binutils/testsuite/binutils-all/readelf.s-64

> @@ -14,10 +14,12 @@ Section Headers:

>   +\[ 4\] .bss +NOBITS +0000000000000000 +000000(4c|50|54|58|68)

>   +0000000000000000 +0000000000000000 +WA +0 +0 +.*

>  # x86 targets may put .note.gnu.property here.

> +# riscv targets put .riscv.attributes here.

>  #...

>   +\[ .\] .symtab +SYMTAB +0000000000000000 +0+.*

>  # aarch64-elf targets have one more data symbol.

>  # x86 targets may have .note.gnu.property.

> +# riscv targets have .riscv.attributes.

>   +0+.* +0000000000000018 +(6|7) +(3|4) +8

>   +\[ .\] .strtab +STRTAB +0000000000000000 +0+.*

>   +0+.* +0000000000000000 .* +0 +0 +1

> diff --git a/binutils/testsuite/binutils-all/readelf.s-64-unused b/binutils/testsuite/binutils-all/readelf.s-64-unused

> index a1e6cd1bbd8..771439411a0 100644

> --- a/binutils/testsuite/binutils-all/readelf.s-64-unused

> +++ b/binutils/testsuite/binutils-all/readelf.s-64-unused

> @@ -14,10 +14,12 @@ Section Headers:

>   +\[ 4\] .bss +NOBITS +0000000000000000 +000000(4c|50|54|58)

>   +0000000000000000 +0000000000000000 +WA +0 +0 +.*

>  # x86 targets may put .note.gnu.property here.

> +# riscv targets put .riscv.attributes here.

>  #...

>   +\[ .\] .symtab +SYMTAB +0000000000000000 +0+.*

>  # aarch64-elf targets have one more data symbol.

>  # x86 targets may have .note.gnu.property.

> +# riscv targets have .riscv.attributes.

>   +0+.* +0000000000000018 +(6|7) +(6|7) +8

>   +\[ .\] .strtab +STRTAB +0000000000000000 +0+.*

>   +0+.* +0000000000000000 .* +0 +0 +1

> diff --git a/binutils/testsuite/binutils-all/readelf.ss b/binutils/testsuite/binutils-all/readelf.ss

> index 5fbb5d002e3..b81c016e9e7 100644

> --- a/binutils/testsuite/binutils-all/readelf.ss

> +++ b/binutils/testsuite/binutils-all/readelf.ss

> @@ -9,6 +9,7 @@ Symbol table '.symtab' contains .* entries:

>   +.: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +[34] static_data_symbol

>  # v850 targets include extra SECTION symbols here for the .call_table_data

>  # and .call_table_text sections.

> +# riscv targets add .riscv.attribute symbol here...

>  #...

>   +[0-9]+: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol

>   +[0-9]+: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol

> diff --git a/binutils/testsuite/binutils-all/readelf.ss-64 b/binutils/testsuite/binutils-all/readelf.ss-64

> index 99a732f71f5..c6ffb0fc523 100644

> --- a/binutils/testsuite/binutils-all/readelf.ss-64

> +++ b/binutils/testsuite/binutils-all/readelf.ss-64

> @@ -7,6 +7,7 @@ Symbol table '.symtab' contains .* entries:

>  #...

>   +.: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +3 static_data_symbol

>  # ... or here ...

> +# riscv targets add .riscv.attribute symbol here...

>  #...

>  .* +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol

>   +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol

> diff --git a/binutils/testsuite/binutils-all/readelf.ss-64-unused b/binutils/testsuite/binutils-all/readelf.ss-64-unused

> index f48a4b2bbd2..cf515aa60d0 100644

> --- a/binutils/testsuite/binutils-all/readelf.ss-64-unused

> +++ b/binutils/testsuite/binutils-all/readelf.ss-64-unused

> @@ -10,6 +10,7 @@ Symbol table '.symtab' contains .* entries:

>  #...

>   +.: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +3 static_data_symbol

>  # ... or here ...

> +# riscv targets add .riscv.attribute symbol here...

>  #...

>  .* +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol

>   +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol

> diff --git a/gas/configure b/gas/configure

> index 110d707f079..7a528fd485e 100755

> --- a/gas/configure

> +++ b/gas/configure

> @@ -12550,14 +12550,7 @@ _ACEOF

>

>

>  if test ${ac_default_generate_riscv_attr} = unset; then

> -    case ${target_os} in

> -      elf)

> -       ac_default_generate_riscv_attr=1

> -       ;;

> -      *)

> -       ac_default_generate_riscv_attr=0

> -       ;;

> -  esac

> +  ac_default_generate_riscv_attr=1

>  fi

>

>

> diff --git a/gas/configure.ac b/gas/configure.ac

> index 78efba88e23..e2374268c56 100644

> --- a/gas/configure.ac

> +++ b/gas/configure.ac

> @@ -727,14 +727,7 @@ AC_DEFINE_UNQUOTED(DEFAULT_X86_USED_NOTE,

>     properties by default.])

>

>  if test ${ac_default_generate_riscv_attr} = unset; then

> -    case ${target_os} in

> -      elf)

> -       ac_default_generate_riscv_attr=1

> -       ;;

> -      *)

> -       ac_default_generate_riscv_attr=0

> -       ;;

> -  esac

> +  ac_default_generate_riscv_attr=1

>  fi

>

>  AC_DEFINE_UNQUOTED(DEFAULT_RISCV_ATTR,

> --

> 2.30.2

>
Nelson Chu July 13, 2021, 7:07 a.m. | #2
Thanks for the suggestion.  Committed this one first.

Nelson

On Fri, Jul 9, 2021 at 4:00 PM Kito Cheng <kito.cheng@sifive.com> wrote:
>

>  I would suggest this patch could be a standalone patch from the

> mapping symbol patch set.

>

> On Fri, Jul 9, 2021 at 3:28 PM Nelson Chu <nelson.chu@sifive.com> wrote:

> >

> > Since gcc commit, 3c70b3ca1ef58f302bf8c16d9e7c7bb8626408bf, we now enable

> > elf attributes for all riscv targets by default in gcc.  Therefore, I

> > think binutils should have the same behavior, in case users are writing

> > assembly files.

> >

> > ChangLog:

> >

> > binutils/

> >

> >         * testsuite/binutils-all/readelf.s: Add comments for riscv.

> >         * testsuite/binutils-all/readelf.s-64: Likewise.

> >         * testsuite/binutils-all/readelf.s-64-unused: Likewise.

> >         * testsuite/binutils-all/readelf.ss: Likewise.

> >         * testsuite/binutils-all/readelf.ss-64: Likewise.

> >         * testsuite/binutils-all/readelf.ss-64-unused: Likewise.

> >

> > gas/

> >

> >         * configure.ac: If --enable-default-riscv-attribute isn't set,

> >         then we enable the elf attributes for all riscv targets by

> >         default.

> >         * configure: Regenerated.

> > ---

> >  binutils/testsuite/binutils-all/readelf.s            | 3 ++-

> >  binutils/testsuite/binutils-all/readelf.s-64         | 2 ++

> >  binutils/testsuite/binutils-all/readelf.s-64-unused  | 2 ++

> >  binutils/testsuite/binutils-all/readelf.ss           | 1 +

> >  binutils/testsuite/binutils-all/readelf.ss-64        | 1 +

> >  binutils/testsuite/binutils-all/readelf.ss-64-unused | 1 +

> >  gas/configure                                        | 9 +--------

> >  gas/configure.ac                                     | 9 +--------

> >  8 files changed, 11 insertions(+), 17 deletions(-)

> >

> > diff --git a/binutils/testsuite/binutils-all/readelf.s b/binutils/testsuite/binutils-all/readelf.s

> > index 6ae4dc756b9..ff37acb4da8 100644

> > --- a/binutils/testsuite/binutils-all/readelf.s

> > +++ b/binutils/testsuite/binutils-all/readelf.s

> > @@ -11,9 +11,10 @@ Section Headers:

> >  #...

> >   +\[ .\] .* +PROGBITS +00000000 0000(3c|40|44|48|50) 0000(04|10) 00 +WA +0 +0 +(.|..)

> >   +\[ .\] .* +NOBITS +00000000 0000(40|44|48|4c|60) 000000 00 +WA +0 +0 +(.|..)

> > -# ARM targets put .ARM.attributes here

> > +# ARM targets put .ARM.attributes here.

> >  # MIPS targets put .reginfo, .mdebug, .MIPS.abiflags and .gnu.attributes here.

> >  # v850 targets put .call_table_data and .call_table_text here.

> > +# riscv targets put .riscv.attributes here.

> >  #...

> >   +\[..\] .symtab +SYMTAB +00000000 0+.* 0+.* 10 +.. +.+ +4

> >   +\[..\] .strtab +STRTAB +00000000 0+.* 0+.* 00 .* +0 +0 +1

> > diff --git a/binutils/testsuite/binutils-all/readelf.s-64 b/binutils/testsuite/binutils-all/readelf.s-64

> > index 92ec05f0376..4c957f7a938 100644

> > --- a/binutils/testsuite/binutils-all/readelf.s-64

> > +++ b/binutils/testsuite/binutils-all/readelf.s-64

> > @@ -14,10 +14,12 @@ Section Headers:

> >   +\[ 4\] .bss +NOBITS +0000000000000000 +000000(4c|50|54|58|68)

> >   +0000000000000000 +0000000000000000 +WA +0 +0 +.*

> >  # x86 targets may put .note.gnu.property here.

> > +# riscv targets put .riscv.attributes here.

> >  #...

> >   +\[ .\] .symtab +SYMTAB +0000000000000000 +0+.*

> >  # aarch64-elf targets have one more data symbol.

> >  # x86 targets may have .note.gnu.property.

> > +# riscv targets have .riscv.attributes.

> >   +0+.* +0000000000000018 +(6|7) +(3|4) +8

> >   +\[ .\] .strtab +STRTAB +0000000000000000 +0+.*

> >   +0+.* +0000000000000000 .* +0 +0 +1

> > diff --git a/binutils/testsuite/binutils-all/readelf.s-64-unused b/binutils/testsuite/binutils-all/readelf.s-64-unused

> > index a1e6cd1bbd8..771439411a0 100644

> > --- a/binutils/testsuite/binutils-all/readelf.s-64-unused

> > +++ b/binutils/testsuite/binutils-all/readelf.s-64-unused

> > @@ -14,10 +14,12 @@ Section Headers:

> >   +\[ 4\] .bss +NOBITS +0000000000000000 +000000(4c|50|54|58)

> >   +0000000000000000 +0000000000000000 +WA +0 +0 +.*

> >  # x86 targets may put .note.gnu.property here.

> > +# riscv targets put .riscv.attributes here.

> >  #...

> >   +\[ .\] .symtab +SYMTAB +0000000000000000 +0+.*

> >  # aarch64-elf targets have one more data symbol.

> >  # x86 targets may have .note.gnu.property.

> > +# riscv targets have .riscv.attributes.

> >   +0+.* +0000000000000018 +(6|7) +(6|7) +8

> >   +\[ .\] .strtab +STRTAB +0000000000000000 +0+.*

> >   +0+.* +0000000000000000 .* +0 +0 +1

> > diff --git a/binutils/testsuite/binutils-all/readelf.ss b/binutils/testsuite/binutils-all/readelf.ss

> > index 5fbb5d002e3..b81c016e9e7 100644

> > --- a/binutils/testsuite/binutils-all/readelf.ss

> > +++ b/binutils/testsuite/binutils-all/readelf.ss

> > @@ -9,6 +9,7 @@ Symbol table '.symtab' contains .* entries:

> >   +.: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +[34] static_data_symbol

> >  # v850 targets include extra SECTION symbols here for the .call_table_data

> >  # and .call_table_text sections.

> > +# riscv targets add .riscv.attribute symbol here...

> >  #...

> >   +[0-9]+: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol

> >   +[0-9]+: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol

> > diff --git a/binutils/testsuite/binutils-all/readelf.ss-64 b/binutils/testsuite/binutils-all/readelf.ss-64

> > index 99a732f71f5..c6ffb0fc523 100644

> > --- a/binutils/testsuite/binutils-all/readelf.ss-64

> > +++ b/binutils/testsuite/binutils-all/readelf.ss-64

> > @@ -7,6 +7,7 @@ Symbol table '.symtab' contains .* entries:

> >  #...

> >   +.: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +3 static_data_symbol

> >  # ... or here ...

> > +# riscv targets add .riscv.attribute symbol here...

> >  #...

> >  .* +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol

> >   +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol

> > diff --git a/binutils/testsuite/binutils-all/readelf.ss-64-unused b/binutils/testsuite/binutils-all/readelf.ss-64-unused

> > index f48a4b2bbd2..cf515aa60d0 100644

> > --- a/binutils/testsuite/binutils-all/readelf.ss-64-unused

> > +++ b/binutils/testsuite/binutils-all/readelf.ss-64-unused

> > @@ -10,6 +10,7 @@ Symbol table '.symtab' contains .* entries:

> >  #...

> >   +.: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +3 static_data_symbol

> >  # ... or here ...

> > +# riscv targets add .riscv.attribute symbol here...

> >  #...

> >  .* +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol

> >   +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol

> > diff --git a/gas/configure b/gas/configure

> > index 110d707f079..7a528fd485e 100755

> > --- a/gas/configure

> > +++ b/gas/configure

> > @@ -12550,14 +12550,7 @@ _ACEOF

> >

> >

> >  if test ${ac_default_generate_riscv_attr} = unset; then

> > -    case ${target_os} in

> > -      elf)

> > -       ac_default_generate_riscv_attr=1

> > -       ;;

> > -      *)

> > -       ac_default_generate_riscv_attr=0

> > -       ;;

> > -  esac

> > +  ac_default_generate_riscv_attr=1

> >  fi

> >

> >

> > diff --git a/gas/configure.ac b/gas/configure.ac

> > index 78efba88e23..e2374268c56 100644

> > --- a/gas/configure.ac

> > +++ b/gas/configure.ac

> > @@ -727,14 +727,7 @@ AC_DEFINE_UNQUOTED(DEFAULT_X86_USED_NOTE,

> >     properties by default.])

> >

> >  if test ${ac_default_generate_riscv_attr} = unset; then

> > -    case ${target_os} in

> > -      elf)

> > -       ac_default_generate_riscv_attr=1

> > -       ;;

> > -      *)

> > -       ac_default_generate_riscv_attr=0

> > -       ;;

> > -  esac

> > +  ac_default_generate_riscv_attr=1

> >  fi

> >

> >  AC_DEFINE_UNQUOTED(DEFAULT_RISCV_ATTR,

> > --

> > 2.30.2

> >